首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Process.Start():系统找不到指定的文件,但我的文件路径似乎是合法的

Process.Start():系统找不到指定的文件,但我的文件路径似乎是合法的
EN

Stack Overflow用户
提问于 2012-04-27 23:39:09
回答 1查看 11.9K关注 0票数 3

这让我心烦意乱。使用以下代码:

代码语言:javascript
复制
Process du = new Process();          

string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory, "du.exe");
Debug.WriteLine(cmdPath);

ProcessStartInfo info = new ProcessStartInfo(cmdPath);
info.CreateNoWindow = true;

info.Arguments = arguments;            
info.UseShellExecute = false;

info.RedirectStandardOutput = true;
du.StartInfo = info;
du.EnableRaisingEvents = true;
du.OutputDataReceived += responseParser;

du.Start();
du.BeginOutputReadLine();
du.WaitForExit();

我负责这个,我得到:

未处理异常: System.ComponentModel.Win32Exception:系统找不到指定的文件

虽然cmdPath的输出值是C:\Windows\system32\du.exe

当然,如果我只是在命令提示符中键入cmdPath的内容,它就会运行du.exe并提供使用信息。

另外,如果我将命令路径替换为" du.exe ",并将du.exe放在工作目录中,则所有操作都正常。但我想参考一下系统位置的那个。

那么,怎么回事?据我所知,我有一个合法的文件说明符,但是为什么Process.Start()不执行它呢?这个基本代码还在执行其他几个程序并得到它们的输出。其他的都可以正常工作,尽管du.exe与它们不同,因为它位于system32目录中。这跟这事有关系吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 23:44:39

这取决于文件系统重定向器。您将在64位机器上运行32位进程。这意味着C:\Windows\system32被透明地重定向到C:\Windows\SysWOW64,我希望在那里找不到du.exe。如果您使用的是C:\Windows\Sysnative,那么您将能够找到文件。

但是,我怀疑您已经将du.exe添加到系统目录中,因为这不是一个标准的Windows组件。你不应该那样做。我建议您将该文件放在其他地方,因为您不应该在系统目录中写入。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10359204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档