我有一个 URL,我想在默认浏览器中启动它。我尝试过两种方法:
Process.Start("http://stackoverflow.com");
...以及本节中详细介绍的一个其他问题 https://stackoverflow.com/questions/856236/net-wpf-process-start-not-working-on-vista-and-windows-2007使用 ShellExecute。
在这两种情况下我都会收到错误:Windows 找不到 'http://stackoverflow.com http://stackoverflow.com'。确保您输入的名称正确,然后重试。
但它不应该尝试将其作为文件打开...据我了解,它应该将其识别为 URL 并在默认浏览器中打开它。我缺少什么?
顺便说一句:OF = Vista,.NET = 3.5
EDIT:
根据这篇 MS 知识库文章 http://support.microsoft.com/kb/305703,由于 Process.Start 默认设置 UseShellExecute,因此它应该启动默认浏览器。
EDIT:
这是有效的:
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
这是值:
"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"
这就说得通了。我实际上将此字符串复制到命令提示符中并将 %1 替换为http://stackoverflow.com http://stackoverflow.com它工作并打开了 Firefox。我只是不明白为什么 Process.Start 没有将 URL 与此命令相关联......