【问题标题】:Why does the system cannot find the file specified? [duplicate]为什么系统找不到指定的文件? [复制]
【发布时间】:2021-04-10 19:32:50
【问题描述】:

我有这个代码 -

private void button1_Click(object sender, EventArgs e) {
    System.Diagnostics.Process.Start(textbox1.Text);
}

我的项目名称是 NewFormX,当我在文本框中键入 NewFormX.exe 并单击按钮时,它工作正常。但是当我用谷歌浏览器尝试相同的chrome.exe时,它显示The system cannot find the file specified(我想在运行时打开文件)。

我几乎滚动到浏览器的第三页,但仍然没有找到任何解释我要查找的内容。

而且,当我尝试使用网络链接(即https://stackoverflow.com/https://www.google.com/)时,错误仍然存​​在。

您的帮助将不胜感激。

【问题讨论】:

  • 如果你想启动一个应用程序,你需要知道它的路径。在文本框中提供完整路径。而且你不能使用Process.Start()打开链接(至少不能直接)。
  • 如果您希望默认 WebBrowser 打开并使用 Process.Start() 导航到 HTTP 地址,您需要 UseShellExecute = true。如果您使用的是 .Net Core / .Net 5+,则需要明确设置它,因为默认值为 false。在 .Net Framework 中,默认值为 true。 -- 对于UseShellExecute = false,您需要提供可执行文件的完整路径为FileName,链接为Arguments

标签: c# visual-studio winforms exception exe


【解决方案1】:

据我所知,有一种方法可以做到这一点。

您可以执行 cmd 命令来启动 chrome,这将在没有路径的情况下启动它。大多数应用程序都有一个快捷方式,您可以通过“运行对话框”或 CMD 使用。

如果安装了 chrome,此代码将执行 chrome 的启动命令。 如果找不到 chrome,您可以将其设为 try catch 语句,例如它只会为用户抛出错误等。

string cmdCommand = "/C start chrome";
System.Diagnostics.Process.Start("CMD.exe", cmdCommand);

此代码也适用于其他应用程序,这些应用程序可以通过运行对话框使用一个快捷方式运行,例如 explorer.exe 或只是 explorer。

如果您有任何其他问题或错误,请提供一些调试数据,例如:错误、您的 VS 版本、您所在的框架等。

编辑:您也可以仅使用Process.Start 运行链接,但它将在默认浏览器中启动它。

System.Diagnostics.Process.Start("https://google.com/");

如果您想运行自己的应用或其他程序,您需要应用的完整路径。

编辑 2:有一种可能做到这一点,它涉及创建一个 try catch 语句,它将从 C:\ 目录中搜索具有特定名称的任何文件,例如。 chrome.exe,这会花费太长时间,而且如果可能的话,搜索其他驱动器,忽略 CD/DVD 驱动器等也会很痛苦。

我不确定您在做什么,但我会尝试根据我的解释找到解决方案。

//code for the solution, coming soon

编辑 3:经过长时间的搜索并且有点忘记这一点,制作这样的解决方案确实没有意义,因为它太复杂并且对于简单的“应用程序打开器”需要太多。

Tested on a default C# Windows Form on the .NET Framework 4.7.2 in Visual Studio 2019 on Windows 10 Pro 64-Bit

【讨论】:

    【解决方案2】:

    你可以这样做 -

    using System.Diagnostics;
    [...]
    
    private void button1_Click(object sender, EventArgs e) {
        Process p = new();
        p.StartInfo.UseShellExecute = true;
        p.StartInfo.FileName = "Your file name with extension/File path";
    
        p.Start();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多