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

Visual Studio C# WinForm调用Process.Start打开链接提示找不到文件如何解决

C# 调用Process.Start打开网址报错排查方案

根本原因

System.Diagnostics.Process.Start直接传入网址的写法只在.NET Framework环境下默认生效,.NET Core 3.x、.NET 5+版本中该方法的默认行为变更:默认将传入的字符串当作本地可执行文件路径查找,不会自动调用系统Shell关联的默认浏览器处理网址,因此会抛出「找不到指定文件」的错误。

排查步骤

  • 首先确认项目目标框架:右键项目 → 打开「属性」面板 → 切换到「应用程序」标签,查看目标框架类型
  • 若为非.NET Framework环境,优先使用适配写法解决
  • 若为.NET Framework环境仍报错,按Win+R输入cmd打开命令提示符,执行start https://www.example.com测试,如果系统无法弹出浏览器,说明系统HTTP协议关联损坏,重置默认浏览器即可修复

通用解决方案(兼容所有.NET版本)

修改启动代码,显式指定UseShellExecute = true,告知系统通过Shell层的关联程序打开目标资源:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("https://www.example.com")
{
    UseShellExecute = true
});

特殊场景解决方案(无Shell执行权限时)

如果程序运行环境限制无法开启UseShellExecute,可以先读取注册表获取系统默认浏览器路径,再传入网址启动:

using Microsoft.Win32;

// 读取注册表中HTTP协议的关联默认浏览器路径
string registryKeyPath = @"HTTP\shell\open\command";
using RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(registryKeyPath, false);
string defaultBrowserPath = registryKey.GetValue(null).ToString().Split('"')[1];

// 启动浏览器打开目标网址
System.Diagnostics.Process.Start(defaultBrowserPath, "https://www.example.com");

注意:网址必须携带http://或https://前缀,缺少前缀会被系统识别为本地文件路径,同样会触发找不到文件错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:48:02