Вы не можете использовать имя файла, например iexplore
, потому что путь к Internet Explorer не указан в переменной среды PATH
для системы или пользователя.
Однако любой путь, введенный в переменную окружения PATH
, позволяет использовать только имя файла для его выполнения.
System32
не является особенным в этом отношении, так как любой каталог может быть добавлен в переменную PATH
. Каждый путь просто ограничен точкой с запятой.
Например, у меня есть c:\ffmpeg\bin\
и c:\nmap\bin\
в моей переменной окружения пути, поэтому я могу делать такие вещи, как new ProcessStartInfo("nmap", "-foo")
или new ProcessStartInfo("ffplay", "-bar")
Фактическая переменная PATH
выглядит так на моей машине.
%SystemRoot%\system32;C:\FFPlay\bin;C:\nmap\bin;
Как видите, вы можете использовать другие system variables
, например %SystemRoot%
, для построения и построения путей в переменной среды.
Итак - если вы добавите путь, например "% PROGRAMFILES% \ Internet Explorer;" к вашей переменной PATH
вы сможете использовать ProcessStartInfo("iexplore");
Если вы не хотите изменять PATH
, просто используйте системную переменную, такую как %PROGRAMFILES%
или %SystemRoot%
, а затем разверните ее при необходимости в коде. т.е.
string path = Environment.ExpandEnvironmentVariables(
@"%PROGRAMFILES%\Internet Explorer\iexplore.exe");
var info = new ProcessStartInfo(path);