在程序中有时需要检测本机已安装的浏览器,打开注册表编辑器可以看到本机已安装的浏览器列表
既然知道了这个位置,那么我们就可以在 .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";
}
遍历注册表中的浏览器列表,再获取相关信息即可。