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

.NET 6 VB.NET调用Process.Start启动网页提示找不到指定文件怎么办

问题根因

你第二段修改的代码存在逻辑错误:你给link.StartInfo设置了UseShellExecute = True,但调用Start方法时传入了一个全新的ProcessStartInfo对象,之前做的配置完全没有生效。
.NET 6 延续了.NET Core的默认配置:ProcessStartInfo.UseShellExecute默认值为False。这个状态下Process类不会调用系统Shell解析URL和默认浏览器的关联关系,会直接把传入的字符串当做本地可执行文件路径查找,自然会抛出“系统找不到指定的文件”的错误。这也解释了为什么系统运行窗口能正常打开网址——运行窗口本身就是走Shell执行逻辑的。

可用的正确代码

简洁写法

不需要显式声明Process对象,直接初始化带正确配置的ProcessStartInfo传入即可:

Dim targetUrl As String = "https://example.com"
Process.Start(New ProcessStartInfo(targetUrl) With {
    .UseShellExecute = True
})

显式Using块写法

如果需要用Using块释放Process资源,不要在Start方法里传新的ProcessStartInfo实例,直接修改Process对象自带的StartInfo属性即可:

Using link As New Process()
    link.StartInfo.FileName = "https://example.com"
    link.StartInfo.UseShellExecute = True
    link.Start()
End Using
排查注意点
  • 传入的URL不需要额外加引号、转义符,直接传原始字符串即可
  • 如果程序以Windows服务、计划任务(非交互用户模式)运行,会拿不到当前登录用户的默认浏览器关联配置,这种场景下需要显式指定浏览器exe路径再传URL参数
  • 只要给ProcessStartInfo设置了UseShellExecute = True,就不需要额外写explorer或者cmd start的中转逻辑,系统会自动调用默认浏览器打开链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:06:26