Как найти полный путь к исполняемому файлу Mercurial, когда Windows может его найти?

Чтобы уточнить : На самом деле вопрос: Как мне найти Клиент командной строки Mercurial . Если ответ применим к любому исполняемому файлу, тем лучше, но меня действительно интересует исполняемый файл hg.exe .

Если я знаю имя исполняемого файла, скажите рт. exe , клиент командной строки Mercurial, и Windows знает, где он находится, потому что я могу выполнить только hg log из командной строки, и он выполняет, какие шаги необходимы, чтобы я мог найти этот исполняемый файл я сам, так же, как это делает командная строка и Windows?

В принципе, если Windows может найти его, я хочу, чтобы моя программа могла его найти.

Есть ли функция WinAPI или аналогичная ? Код будет работать в .NET, написанном на C #, поэтому, если в .NET есть что-нибудь для этого, это было бы предпочтительным решением, но в остальном я не против использования P / Invoke для этого.

Я видел один потенциальный дубликат этого вопроса: c # Проверить, существует ли исполняемый файл в пути Windows , но это все, что нужно? Просто перебрать содержимое переменной среды PATH и искать в каждом из этих каталогов исполняемый файл?

У меня смутное представление о том, что это всего лишь один из задействованных шагов и, возможно, есть реестр переопределяет, что Windows может использовать, о чем я должен знать, поэтому я опубликую здесь вопрос.

Если, с другой стороны, здесь действительно используется только переменная PATH, ее, вероятно, можно безопасно закрыть как дубликат.

11
задан Community 23 May 2017 в 12:33
поделиться