我有一个 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/