Process.Start () и переменная среды PATH

У меня есть следующее тривиальное приложение на C #, которое просто пытается запустить «jconsole.exe», которое на моей машине находится в 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);
      }
    }
  }
}

Если моя переменная окружения PATH установлена в

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

это работает отлично. Однако, если переменная среды PATH установлена в

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

(обратите внимание на две обратные косые черты между «c:» и «Programs»), он завершается ошибкой с исключением 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)

Интересно, что в той же командной строке, где я запускаю программу .NET и получаю исключение, я могу просто напечатать «jconsole.exe», и программа запустится. Похоже, у Windows нет проблем с поиском исполняемого файла с двойной обратной косой чертой в переменной PATH, но Process.Start () делает это.

Почему дополнительная обратная косая черта в PATH вызывает проблемы, и как я могу обойти эту проблему? Я не знаю, где будет находиться исполняемый файл, который я хочу вызвать, во время выполнения, поэтому я скорее полагаюсь на переменную PATH.

Ответы на вопрос(3)

Ваш ответ на вопрос