gpt4 book ai didi

c# - 无法设置 Process.StartInfo.WorkingDirectory 以从 c# 调用 exe

转载 作者:行者123 更新时间:2023-12-05 04:03:47 26 4
gpt4 key购买 nike

我正在尝试使用 System.Diagnostics.Process 命名空间在 C# 程序中调用 chrome.exe

我的 chrome.exe 位于路径 C:\Program Files (x86)\Google\Chrome\Application

如果我通过传递以下参数调用 RunProc 函数 -(保持 exe 的绝对路径并保持 WorkingDirectory 为空)

("C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe", "https://www.google.com ", "") 它工作正常。

但是,带参数 -

("Chrome.exe , "https://www.google.com ", "C:\Program Files (x86)\Google\Chrome\Application") 它在 proc.Start 步骤给出异常(); 声明 - 系统找不到指定的文件。

我还尝试在初始化 StartInfo 时编写 WorkingDirectory = workingDir 但仍在寻找解决方案。

class Program
{
static void Main(string[] args)
{
RunProc(@"chrome.exe", @"https://www.google.com", @"C:\Program Files (x86)\Google\Chrome\Application");
}

static bool RunProc(string exe, string args, string workingDir)
{
Process proc = new Process
{
StartInfo =
{
FileName = exe,
CreateNoWindow = true,
RedirectStandardInput = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
Arguments = args,
//WorkingDirectory = workingDir
}
};

if (!string.IsNullOrEmpty(workingDir))
{
proc.StartInfo.WorkingDirectory = workingDir;
}

proc.Start();
proc.StandardInput.WriteLine(args);
proc.StandardInput.Flush();
proc.StandardInput.Close();

return true;
}

}

最佳答案

唯一可行的方法是在尝试启动其他进程之前,将您的 工作目录更改为传入的工作目录。 WorkingDirectory 属性就是这样,它不会以任何方式参与定位要运行的可执行文件。如果您未能提供完全限定名称,那仅取决于您的工作目录和 PATH 环境变量。

static bool RunProc(string exe, string args, string workingDir)
{
var prevWorking = Environment.CurrentDirectory;
try
{
Environment.CurrentDirectory = workingDir;
Process proc = new Process
{
StartInfo =
{
FileName = exe,
CreateNoWindow = true,
RedirectStandardInput = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
Arguments = args,
}
};

proc.Start();
proc.StandardInput.WriteLine(args);
proc.StandardInput.Flush();
proc.StandardInput.Close();

return true;
}
finally
{
Environment.CurrentDirectory = prevWorking;
}
}

关于c# - 无法设置 Process.StartInfo.WorkingDirectory 以从 c# 调用 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317899/

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