You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Forms应用调用Process.Start()报错问题咨询

问题原因

在.NET Core/.NET 5+(包括你使用的.NET 6)中,Process.Start(string) 方法默认不会识别URL并调用浏览器,它会将传入的URL当作可执行文件路径,在当前工作目录下查找,因此出现“系统找不到指定文件”的错误。而.NET Framework中该方法默认会通过系统shell处理URL,自动调用默认浏览器打开。

解决方案

有两种可靠的解决方式:

方法一:使用ProcessStartInfo指定UseShellExecute为true

显式配置ProcessStartInfo,开启UseShellExecute(该属性在.NET Core+中默认是false,开启后会让系统shell处理URL):

private void button1_Click(object sender, EventArgs e)
{
    Process.Start(new ProcessStartInfo("https://www.google.com") 
    { 
        UseShellExecute = true 
    });
}

方法二:调用Windows Forms的Launcher(适用于.NET 6+ WinForms)

.NET 6及以上的Windows Forms提供了更简洁的Launcher类,专门用于打开URI:

using System.Windows.Forms;

private void button1_Click(object sender, EventArgs e)
{
    Launcher.LaunchUri(new Uri("https://www.google.com"));
}
补充说明
  • UseShellExecute = true 不仅能处理URL,还能处理其他系统可识别的文件类型(比如文档、图片等),会调用默认关联程序打开。
  • 如果你的应用是.NET 6+的桌面应用,推荐使用Launcher方法,它是专门为现代.NET桌面场景设计的API,更简洁可靠。

内容的提问来源于stack exchange,提问作者ICODE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:24:56