Registry中的DefaultBrowser不起作用

时间:2010-11-11 14:28:33

标签: c# browser shell process.start

我正在尝试在默认浏览器中打开一个网址。显然我认为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。我在几台电脑上试过了......

我不关心在默认浏览器中调用链接的方式,但它必须是默认

3 个答案:

答案 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/");

除非您试图确定哪个浏览器设置为默认值,否则不需要任何花哨的注册表技巧。