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

C#中如何调用默认浏览器打开网站?Process.Start失效解决

问题根因

你写的System.Diagnostics.Process.Start("http://website.com")运行不生效,是两个原因导致的:

  • .NET Core及后续的.NET 5+版本中,ProcessStartInfo.UseShellExecute的默认值从老版.NET Framework的true改成了false。关闭这个配置后,Process类不会走Windows系统的协议关联逻辑,只会直接尝试启动本地exe文件,传入URL时会因为找不到对应本地文件静默失败,既不抛错也不会打开页面
  • Windows 11对默认浏览器(尤其是预装的Microsoft Edge这类打包应用)的URL唤起加了校验,必须走系统Shell路由才能正常拉起,直接调用底层进程启动接口会被系统拦截
可直接运行的实现方案

方案1:跟随系统默认浏览器打开(推荐)

这个写法兼容所有.NET版本,自动适配Win10/Win11系统上设置的任意默认浏览器,不需要硬编码浏览器路径:

using System.Diagnostics;

// 将字符串参数替换为你实际要打开的目标站点地址即可
Process.Start(new ProcessStartInfo("你的目标游戏站点地址")
{
    UseShellExecute = true
});

配合你要的提示逻辑的完整示例:

using System.Diagnostics;

// 自行实现不定期触发逻辑,比如随机休眠后执行以下代码
Console.WriteLine("the game!");
Process.Start(new ProcessStartInfo("你的目标游戏站点地址")
{
    UseShellExecute = true
});

方案2:强制使用Microsoft Edge打开

如果你不想依赖系统默认浏览器设置,可以直接定位Edge的本地安装路径启动:

using System.Diagnostics;

// 优先查找x86路径下的Edge稳定版安装位置
string edgeInstallPath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
    @"Microsoft\Edge\Application\msedge.exe");

// x86路径不存在时查找x64安装位置
if (!File.Exists(edgeInstallPath))
{
    edgeInstallPath = Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
        @"Microsoft\Edge\Application\msedge.exe");
}

// 启动Edge并打开目标站点
Process.Start(new ProcessStartInfo
{
    FileName = edgeInstallPath,
    Arguments = "你的目标游戏站点地址",
    UseShellExecute = false
});
注意事项
  • 不要省略UseShellExecute = true的配置,这是Win11下能正常唤起默认浏览器的核心参数
  • 程序运行不需要管理员权限,普通用户权限下即可正常触发,不会被UAC拦截
  • 如果发布时开启了程序集裁剪,记得保留System.Diagnostics相关类型,避免运行时抛出缺失类型异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:09:20