抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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

register-browsers-list

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

评论