【发布时间】:2011-02-17 06:54:46
【问题描述】:
我有一个 URL,我想在默认浏览器中启动它。我试过两种方法:
Process.Start("http://stackoverflow.com");
...以及在此other question 中详细介绍的使用 ShellExecute。
在这两种情况下,我都会收到错误消息:Windows 找不到“http://stackoverflow.com”。请确保您输入的名称正确,然后重试。
它不应该尝试将其作为文件打开...据我了解,它应该将其识别为 URL 并在默认浏览器中打开它。我错过了什么?
顺便说一句:OS = 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
这是价值:
"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"
这是有道理的。我实际上将此字符串复制到命令提示符中并将 %1 替换为 http://stackoverflow.com 并且它工作并打开了 Firefox。我只是不明白为什么 Process.Start 没有将 URL 与此命令相关联...
【问题讨论】:
-
我想知道它是否适用于包括文件名和扩展名在内的 URL 更好?试试“msdn.microsoft.com/en-us/default.aspx”。
-
顺便说一句,不要硬编码“程序文件”,因为如果windows版本不是英文的,那就不同了。
-
@M28:这就是我说的,不是吗?
-
您在什么凭据下运行?
-
@Jeremy McGee:它是 Vista Home Premium,我是管理员,但应用程序没有在提升的权限下执行。