Variable d'environnement Process.Start () et PATH

J'ai le texte suivant trivial application en C# qui, tout simplement, les tentatives de lancement "jconsole.exe" que ma machine est situé dans C:\Programs\jdk16\bin.

using System;
using System.Diagnostics;

namespace dnet {
  public class dnet {
    static void Main( string[] args ) {
      try {
        Process.Start("jconsole.exe");
        Console.WriteLine("Success!");
      } catch (Exception e) {
        Console.WriteLine("{0} Exception caught.", e);
      }
    }
  }
}

Si ma variable d'environnement PATH est fixé à

c:\windows;c:\windows\sytem32;c:\programs\jdk16\bin

il fonctionne parfaitement. Toutefois, si la variable d'environnement PATH est fixé à

c:\windows;c:\windows\sytem32;c:\\programs\jdk16\bin

(notez les deux barres obliques inverses entre "c:" et "programmes"), il échoue avec une exception win32.

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at dnet.dnet.Main(String[] args)

Il est intéressant de noter, dans la même invite de commande lorsque je lance le .NET programme et obtenir de l'exception, il me suffit de taper "jconsole.exe" et le programme va commencer. Windows semble avoir aucun mal à trouver l'exécutable avec la double barre oblique inverse dans le CHEMIN, mais le Processus.Start ().

Pourquoi est la barre oblique inverse supplémentaire dans le CHEMIN d'accès à l'origine des problèmes, et comment je peux contourner le problème? Je ne sais pas où est l'exécutable, je tiens à appeler sera situé à l'exécution, donc, je préfère compter sur la variable de CHEMIN d'accès.

source d'informationauteur Reg Domaratzki