我正在尝试在默认浏览器中打开一个网址。显然我认为Shell Exec会在默认浏览器中打开它,但它没有。
然后我试着明确:
Process.Start(GetDefaultBrowserPath(), "http://stackoverflow.com");
private static string GetDefaultBrowserPath()
{
string key = @"htmlfile\shell\open\command";
RegistryKey registryKey =
Registry.ClassesRoot.OpenSubKey(key, false);
// get default browser path
return ((string)registryKey.GetValue(null, null)).Split('"')[1];
}
它总是返回Internet Explorer,但不是我的默认值,即Firefox。我在几台电脑上试过了......
我不关心在默认浏览器中调用链接的方式,但它必须是默认
答案 0 :(得分:4)
您是否尝试过运行:
Process.Start("http://stackoverflow.com");
我的测试应用程序(如下)在我的默认浏览器中打开网站:
using System;
using System.Diagnostics;
namespace ProcessStartSample
{
class Program
{
static void Main(string[] args)
{
Process.Start("http://stackoverflow.com");
}
}
}
换句话说,让操作系统做一些繁重的工作来解决用户默认浏览器的问题! =)
答案 1 :(得分:1)
试试这个:)
Process.Start("http://stackoverflow.com");
如果您想找到默认浏览器,则应打开HKEY_CLASSES_ROOT\http\shell\open\command\default
键。
请注意“http”而非“htmlFile”
编辑:
CODE:
RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command", false);
string value = registryKey.GetValue("").ToString();
答案 2 :(得分:0)
如果您只是指定要打开的URL,Windows将自动为您启动用户系统上的默认浏览器:
Process.Start("http://www.google.com/");
除非您试图确定哪个浏览器设置为默认值,否则不需要任何花哨的注册表技巧。