抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

在程序中有时需要检测本机已安装的浏览器,打开注册表编辑器可以看到本机已安装的浏览器列表

register-browsers-list

既然知道了这个位置,那么我们就可以在 .Net6 中使用操作注册表的方式来获取这些信息,.Net6 操作注册表使用的是 Microsoft.Win32 命名空间中的 Registry 类。

using System.Diagnostics;
using Microsoft.Win32;

browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet");
if (browserKeys == null)
    browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");
string[] browserNames = browserKeys.GetSubKeyNames();
for (int i = 0; i < browserNames.Length; i++)
{
    BrowserEntity browser = new BrowserEntity();
    RegistryKey browserKey = browserKeys.OpenSubKey(browserNames[i]);
    browser.Name = (string)browserKey.GetValue(null);
    RegistryKey browserKeyPath = browserKey.OpenSubKey(@"shell\open\command");
    browser.Path = (string)browserKeyPath.GetValue(null).ToString().StripQuotes();
    RegistryKey browserIconPath = browserKey.OpenSubKey(@"DefaultIcon");
    browser.IconPath = (string)browserIconPath.GetValue(null).ToString().StripQuotes();
    browsersList.Add(browser);
    if (browser.Path != null)
        browser.Version = FileVersionInfo.GetVersionInfo(browser.Path).FileVersion;
    else
        browser.Version = "unknown";
}

遍历注册表中的浏览器列表,再获取相关信息即可。

完整代码:https://github.com/varm/dotnet.checkbrowsers

评论