要澄清:问题实际上是:我如何找到Mercurial命令行客户端。如果答案适用于任何可执行文件,那就更好了,但是我对hg.exe可执行文件确实很感兴趣。

如果我知道可执行文件的名称(例如hg.exe,Mercurial命令行客户端),并且Windows知道它在哪里,因为我可以从命令提示符处仅执行hg log并执行,那么要执行什么步骤才能找到该可执行文件我自己,就像命令提示符和Windows一样吗?

基本上,如果Windows能够找到它,我希望我的程序能够找到它。

是否有WinAPI函数或类似的函数?该代码将在用C#编写的.NET中运行,因此,如果在.NET中内置有任何内容,这将是首选解决方案,但是对于使用P/Invoke而言,我并不反对。

我已经看到了这个问题的一个潜在重复项:c# Check if an executable exists in the windows path,但这就是全部吗?只是遍历PATH环境变量的内容并在每个目录中查找可执行文件?

我有一个模糊的概念,那就是所涉及的步骤之一,而且可能我应该意识到Windows可以使用的注册表替代,因此我将在此处发布问题。

另一方面,如果此处确实只有PATH变量在起作用,则可以安全地将其作为重复变量关闭。

最佳答案

这取决于程序如何在系统中注册。由于hg通常是通过工具或命令行运行的,因此不会在系统中注册。如果是,则有一组具有exe名称和路径的注册表项。否则,您只需遍历从第一个条目到最后一个条目的路径,直到找到所需的文件。在路径上找到的第一个获胜。

这样的“注册”程序,excel或winword的示例。

编辑:

@BillyONeal在下面指出了一个重点,它仅适用于“运行”命令程序,但我的意思是要查找第二个地方。

此外,对于那些还没看过的人,这是install procedures:

关于.net - Windows能够找到Mercurial可执行文件时,如何找到其完整路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4139306/

10-12 12:49
查看更多