1

我以通常的方式启动一个可执行文件:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.WorkingDirectory = @"C:\someDirectory\";
p.StartInfo.FileName = "ConsoleProgram.exe";
p.Start();

目前,可执行文件不在 中C:\someDirectory\,所以我希望上面的操作由于找不到可执行文件而失败。

相反,它的作用是,由于某些原因,它在我的桌面上找到了一个同名的不同可执行文件!(我知道这一点,因为如果我重命名桌面上的 .exe,软件会抱怨找不到 .exe。)我怎样才能防止这种行为,并强制执行特定路径而不是其他路径?

4

3 回答 3

2

当 UseShellExecute 为 false 时,WorkingDirectory 属性不用于查找可执行文件。相反,它由已启动的进程使用,并且仅在新进程的上下文中才有意义。

在这里,您将 UseShellExecute 设置为 false,WorkingDirectory 绝对没有任何意义,因此您必须使用绝对路径作为 FileName。

于 2012-06-17T17:14:41.730 回答
1

您是否尝试将 设置Filename为文件的路径?像这样:

p.StartInfo.FileName = @"C:\someDirectory\ConsoleProgram.exe";
于 2012-06-17T17:00:55.510 回答
1

将完整的路径信息添加到 FileName。

于 2012-06-17T17:01:26.247 回答