【问题标题】:Error - file not found when it is definitely there错误 - 当文件确实存在时找不到文件
【发布时间】:2023-03-02 22:44:01
【问题描述】:

我正在尝试使用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)) {
}

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

如何运行带参数的命令?

【问题讨论】:

  • 是绝对路径还是相对路径?
  • 您能否在代码示例中提供更多信息?
  • 有内部异常吗?
  • 您确定这不是权限问题吗?它是从网络驱动器运行的吗?应用程序是否在与您检查时使用的用户帐户不同的用户帐户下运行?文件是在 C 驱动器的根目录中还是在 Windows 目录等“受保护”的地方;因为 UAC 可能会妨碍您使用 Windows 7。
  • 尝试发布不起作用的代码,然后您将获得更多帮助。

标签: c# .net win32exception


【解决方案1】:

参数使用this method。或者使用 ProcessStartInfo 重载。

【讨论】:

    【解决方案2】:

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

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

    我正在为您查找一些资源。当我找到比我能解释得更好的东西时,我会通知你。

    编辑:

    我发现带有参数的命令是一个痛苦,才能正常工作。我通常只是求助于编写一个批处理文件,然后让 C# 运行它。

    【讨论】:

    • 在 64 位系统上,Windows 会为 32 位进程重定向一些文件夹。它被称为WOW64。 (Windows 上的 Windows)
    • 我不想让你花时间寻找任何东西。请查看我的编辑。
    • @baruch - 好吧,我确实对您的后续问题有建议。
    【解决方案3】:

    添加一个 if 语句,如:

    if (File.Exists(Your EXE))
    {
        // Start the process
    } 
    

    否则你无法确定使用的路径是正确的。

    也看看这个answer,也许它会有所帮助

    【讨论】:

    • 比赛条件。文件系统是共享资源。您的文件可能存在用于调用 File.Exists() 并在下次调用之前被删除。除此之外,这根本没有回答问题。
    • 问题不一样,不是避免异常,而是为什么即使可执行文件存在进程也无法启动
    • 文件位于正确位置的假设是您必须保证的,当我阅读抛出的异常时,我相信系统该文件不在 PO 假设的位置,因此这样如果你注意到文件不存在于你所做的事情的地方,if 语句可以为你节省很多时间,如果文件存在,那么你可以进一步检查为什么它没有开始的问题,但我真的不认为这会就是这样。
    • @Kugel 我在访问它们之前检查 allways 字段是否存在,这就是该功能存在的原因,我从来没有遇到过任何问题,但是如果发生这种情况,那么您将收到一条合适的消息,表明该文件被另一个进程使用。如前所述,这不应该发生,因为 File.Exists 在方法离开后实际上不应该阻止文件。
    • 发现问题是Process.Start() API使用错误,与文件存在无关。
    【解决方案4】:

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

    http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多