什么RegKey可以从默认的浏览器应用程序的path?
从C#/ .NET获得它的最佳方式?
这是你想要的钥匙:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\ HTTP \壳\开放\命令
如果你需要的话,这里有一个C#的快速注册表教程 。
编辑 :
对于每个用户的设置,使用这个键:
HKEY_CLASSES_ROOT \ HTTP \壳\开放\命令
(HKCR有机器和用户设置,用户优先)。
请注意,这可能不适用于Vista 。 欲了解更多信息, 请看这里 。
为Windows 7默认浏览器路径保存在以下注册表项中
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ Associations\UrlAssociations\http
通过使用C#你可以得到它如下 –
RegistryKey regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", false); string browser = regkey.GetValue("Progid").ToString();
基于你的回答,我写了这个示例代码,应该做你想要的(没有测试)
public static string GetDefaultBrowserPath() { string defaultBrowserPath = null; RegistryKey regkey; // Check if we are on Vista or Higher OperatingSystem OS = Environment.OSVersion; if ((OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6)) { regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", false); if (regkey != null) { defaultBrowserPath = regkey.GetValue("Progid").ToString(); } else { regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Classes\\IE.HTTP\\shell\\open\\command", false); defaultBrowserPath = regkey.GetValue("").ToString(); } } else { regkey = Registry.ClassesRoot.OpenSubKey("http\\shell\\open\\command", false); defaultBrowserPath = regkey.GetValue("").ToString(); } return defaultBrowserPath; }
我只是为此做了一个功能:
public void launchBrowser(string url) { string browserName = "iexplore.exe"; using (RegistryKey userChoiceKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice")) { if (userChoiceKey != null) { object progIdValue = userChoiceKey.GetValue("Progid"); if (progIdValue != null) { if(progIdValue.ToString().ToLower().Contains("chrome")) browserName = "chrome.exe"; else if(progIdValue.ToString().ToLower().Contains("firefox")) browserName = "firefox.exe"; else if (progIdValue.ToString().ToLower().Contains("safari")) browserName = "safari.exe"; else if (progIdValue.ToString().ToLower().Contains("opera")) browserName = "opera.exe"; } } } Process.Start(new ProcessStartInfo(browserName, url)); }