gpt4 book ai didi

c# - 如何使用 Process.UseShellExecute=false 的系统路径?

转载 作者:行者123 更新时间:2023-11-30 17:01:07 27 4
gpt4 key购买 nike

我正在开发一个使用 Process API 生成子进程的应用程序,并将 UseShellExecute 设置为 false。这个问题是我不想去寻找我正在生成的进程,因为它们在我的系统路径中可用。例如,我想通过键入 SCRIPT_NAME.py ARGUMENTS 来运行 Python 脚本。但是,当我将 Process.FileName 设置为 SCRIPT_NAME.py 时,出现错误提示找不到 SCRIPT_NAME.py。我希望工作目录位于 SCRIPT_NAME.py 所在的位置,否则我将不得不指定 SCRIPT_NAME.py 及其参数的绝对路径,这是荒谬的过多的。

我可以通过使用 cmd.exe/C SCRIPT_NAME.py ARGUMENTS 来避免这种情况,但是强制停止命令提示符存在问题,这反而将我推向了这个方向。

最佳答案

要解决此问题,您只需搜索一组可用路径,寻找包含 python.exe 的路径。一旦你发现 just fully qualified the python executable for launching in process

var path = Environment.GetEnvironmentVariable("PATH");
string pythonPath = null;
foreach (var p in path.Split(new char[] { ';' })) {
var fullPath = Path.Combine(p, "python.exe");
if (File.Exists(fullPath)) {
pythonPath = fullPath;
break;
}
}

if (pythonPath != null) {
// Launch Process
} else {
throw new Exception("Couldn't find python on %PATH%");
}

关于c# - 如何使用 Process.UseShellExecute=false 的系统路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21420403/

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