C# 错误-文件确实存在时未找到

C# 错误-文件确实存在时未找到,c#,.net,win32exception,C#,.net,Win32exception,我正在尝试使用System.Diagnostics.process.Start()运行进程,但出现以下错误: System.ComponentModel.Win32Exception: The system cannot find the file specified 我仔细检查了路径,甚至将字符串复制到cmd窗口,在那里它运行得很好。有什么问题吗 我使用的是Win7 64位,我试图运行的程序是用mingw64-x64编译的,我是为.NET 2.0编译的 编辑 在尝试做建议的事情时 if (F

我正在尝试使用
System.Diagnostics.process.Start()
运行进程,但出现以下错误:

System.ComponentModel.Win32Exception: The system cannot find the file specified
我仔细检查了路径,甚至将字符串复制到
cmd
窗口,在那里它运行得很好。有什么问题吗

我使用的是Win7 64位,我试图运行的程序是用mingw64-x64编译的,我是为.NET 2.0编译的

编辑
在尝试做建议的事情时

if (File.Exists(Your EXE)) {
}
我发现从命令字符串中删除标志解决了这个问题(我认为这不是一个问题,所以之前没有提到)


如何使用参数运行命令?

添加一条if语句,如:

if (File.Exists(Your EXE))
{
    // Start the process
} 
否则,您无法确保使用的路径是正确的


也看看这个,也许它有帮助

Windows 7文件夹重定向可能是个问题

基本上,有时当您尝试访问“C:\program files”时,它会将您重定向到类似“C:\users\username\program files”的位置

我正在为你查找一些资源。当我找到比我更能解释它的东西时,我会让你知道的

编辑:


我发现带参数的命令要正常工作是件麻烦事。我通常只是写一个批处理文件,然后让C运行它。

作为参数使用。或使用ProcessStartInfo重载。

使用ProcessStartInfo类并将值设置为Arguments属性:


它是绝对路径还是相对路径?能否在代码示例中提供更多信息?是否存在内部异常?是否确定这不是权限问题?它是从网络驱动器运行的吗?应用程序是否在与您使用的用户帐户不同的用户帐户下运行?文件是否在C驱动器的根目录中,或者在windows目录等“受保护”的地方;因为在windows 7上,UAC可能会妨碍您。请尝试发布不起作用的代码,然后您将获得更多帮助。在64位系统上,windows会为32位进程重定向一些文件夹。它被称为WOW64。我不想让你花时间什么都不找。请看我的编辑。@baruch-好吧,我对你接下来的问题有一个建议。比赛条件。文件系统是一种共享资源。您的文件可能存在以便调用file.Exists(),并在下次调用之前删除。除此之外,这根本没有回答问题。问题是不同的,它不是关于避免异常,而是关于为什么即使在可执行文件存在的情况下进程也无法启动假设文件位于正确的位置,这是您必须注意的,当我读到抛出的异常时,我相信系统认为该文件不在PO假定的位置,因此,如果您注意到该文件不存在于它所处的位置,那么这样的if语句可以为您节省大量时间,如果该文件存在,那么您可以进一步检查问题,为什么不开始使用它,但是我真的不认为会是这样。@Kugel在访问它们之前,我检查了所有的文件是否存在,这就是为什么函数存在的原因,我从来没有遇到过任何问题,但是如果发生这种情况,那么您将得到一个合适的消息,文件被另一个进程使用。如前所述,这不应以文件的形式发生。在methode离开后,Exists不应实际阻止该文件。问题暴露为Process.Start()API的错误使用,与该文件的存在无关。