Учитывая путь стиля командной строки к команде, такой как 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).
(Этот вопрос трудно найти вокруг из-за двух разных значений слова "путь" )