我有一个URL,想在默认浏览器中启动它。我已经尝试了两种方法:
Process.Start("http://stackoverflow.com");
...并且在另一个问题中详细说明如何使用ShellExecute。
无论是哪种情况,我都会收到错误消息:“Windows无法找到'http://stackoverflow.com'。请确保您正确输入名称,然后重试。”
但它不应该尝试将其作为文件打开...根据我的理解,它应该将其识别为URL并在默认浏览器中打开。我漏掉了什么吗?
顺便说一下:操作系统=Vista,.NET=3.5
编辑:
根据这篇MS KB文章,由于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
这是数值:
"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"
这很有道理。我实际上把这个字符串复制到命令提示符中,并将%1替换为http://stackoverflow.com,它就可以打开Firefox了。我只是不明白为什么Process.Start没有将URL与这个命令关联起来...