gpt4 book ai didi

.net - 当 Windows 能够找到它时,如何找到 Mercurial 可执行文件的完整路径?

转载 作者:可可西里 更新时间:2023-11-01 12:38:32 24 4
gpt4 key购买 nike

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

如果我知道可执行文件的名称,比如说 hg.exe,Mercurial 命令行客户端,Windows 就知道它在哪里,因为我可以只执行 hg log从命令提示符并执行,我需要执行哪些步骤才能自己找到该可执行文件,方式与命令提示符和 Windows 执行的方式相同?

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

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

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

我有一个模糊的概念,这只是所涉及的步骤之一,并且可能存在 Windows 可以使用的注册表覆盖,我应该知道,所以我将在此处发布问题。

另一方面,如果这里真的只有 PATH 变量在起作用,它可能可以安全地作为副本关闭。

最佳答案

你可以欺骗并使用where.exe命令

public GetFullPath(string program)
{
string result;

Process myProcess = new Process()
{
UseShellExecute = false,
RedirectStandardOutput = true,
StartInfo = new ProcessStartInfo(@"%SYSTEMDIR%\where.exe" )
};

using (StreamReader sr = myProcess.StandardOutput)
{
myProcess.Start();
result = myStreamReader.ReadLine();
myProcess.Close();
}

return result;
}

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com