Учитывая путь стиля командной строки к команде, такой как bin/server.exe
или ping
, как я могу получить полный путь к этому исполняемому файлу (так как cmd или Process.Start
разрешат его)?
Я пробовал Path.GetFullPath
, но он всегда расширяется относительно рабочего каталога. Он правильно расшифровывает bin/server.exe
, но, учитывая ping
, он возвращает c:\users\matt\ping
(несуществующий). Я хочу c:\Windows\system32\ping.exe
.
Изменить: Мне хотелось бы, чтобы это было так же, как cmd. Некоторые соображения:
- Когда есть локальный исполняемый файл с тем же именем, что и один в пути, cmd предпочитает локальный
- cmd может расширить команду
server
доserver.bat
илиserver.exe
(добавление расширения файла)
Я также попробовал инструмент командной строки Windows под названием where
. Мне это почти нравится:
Отображает расположение файлов, соответствующих шаблону поиска. По умолчанию поиск выполняется по текущему каталогу и по путям, указанным переменной среды PATH.
>where ping
C:\Windows\System32\PING.EXE
>where bin\server
INFO: Could not find files for the given pattern(s).
(Этот вопрос трудно найти вокруг из-за двух разных значений слова "путь" )