c# - 如何从 .NET 程序打开 Web 浏览器? Process.Start() 不工作?

标签 c# url browser process

我有一个 URL,我想在默认浏览器中启动它。我尝试了两种方法:

Process.Start("http://stackoverflow.com");

... 以及本 other question 中详述的那个使用 ShellExecute。

在这两种情况下,我都收到错误消息:Windows 找不到“http://stackoverflow.com” '.请确保您输入的名称正确,然后重试。

虽然它不应该尝试将其作为文件打开...据我了解,它应该将其识别为 URL 并在默认浏览器中打开它。我错过了什么?

顺便说一句:操作系统 = Vista,而 .NET = 3.5

编辑:

根据 this MS KB article ,因为 Process.Start 默认设置 UseShellExecute,它应该启动默认浏览器。

编辑:

这是有效的:

System.Diagnostics.Process.Start(@"C:\Program Files\Internet Explorer\IExplore.exe", "http://stackoverflow.com");

不幸的是,它确实不会启动默认浏览器,如果 IE 没有安装在“正常”位置,它也不会工作。我不确定在这里做什么。

更多信息:

好的,我得到的错误是错误号 -2147467259。看看谷歌这个,似乎它不是很描述性。可能是文件关联错误之类的。

情节变浓了:

所以我检查了应该与我的 http 文件关联的注册表项:

KEY_CLASSES_ROOT\http\shell\open\command\default

这是值(value):

"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"

这是有道理的。我实际上将这个字符串复制到命令提示符中,并将 %1 替换为 http://stackoverflow.com它工作并打开了火狐。我只是不明白为什么 Process.Start 没有将 URL 与此命令相关联...

最佳答案

这对我有用:

Process proc = new Process ();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = "http://stackoverflow.com";
proc.Start ();

别忘了 UseShellExecute如果您想使用自动识别命令类型(在本例中为 http/browser)。

编辑:如果您 Win+R 网址是否有效?

关于c# - 如何从 .NET 程序打开 Web 浏览器? Process.Start() 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796329/

相关文章:

c# - 如何解码G711音频数据包C#

c# - 在 .net core 2 解决方案中引用 .net 4.7 框架程序集

c# - 从上一个位置恢复滚动时列表框跳到顶部

c# - 在同一个 Stream 上启动多个异步读/写操作是否会破坏数据?

java - 字符串中的第 N 个索引?

java - Lobo Cobra HtmlPanel 在 JavaScript 操作后不更新 GUI

使用链接打印日期和时间的 JavaScript 不起作用

java - 使用 URL 引用桌面

regex - 从 URL 中删除文件名

java - 可嵌入的跨平台 Web 浏览器?