Если я запускаю процесс с помощью ShellExecute
(или в .net с System.Diagnostics.Process.Start()
), процесс имени файла для запуска не обязательно должен быть полным путем.
Если я хочу запустить блокнот, я могу использовать
Process.Start("notepad.exe");
вместо
Process.Start(@"c:\windows\system32\notepad.exe");
потому что директиву c:\windows\system32
является частью переменной среды PATH.
как я могу проверить, существует ли файл в PATH без выполнения процесса и без разбора переменной PATH?
System.IO.File.Exists("notepad.exe"); // returns false
(new System.IO.FileInfo("notepad.exe")).Exists; // returns false
но мне нужно что-то вроде этого:
System.IO.File.ExistsOnPath("notepad.exe"); // should return true
и
System.IO.File.GetFullPath("notepad.exe"); // (like unix which cmd) should return
// c:\windows\system32\notepad.exe
Есть ли предопределенный класс для выполнения этой задачи в BCL?