マシンアーキテクチャー(x64 vs x86)と、Microsoft Edgeが指定されたキーの下にないという事実。ここで(オンラインで見つける複数のソリューションに基づいて)私が使用して終了するものである:
private List<Browser> GetBrowsers()
{
RegistryKey browserKeys;
browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet");
if (browserKeys == null)
browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");
string[] browserNames = browserKeys.GetSubKeyNames();
List<Browser> browsers = new List<Browser>();
for (int i = 0; i < browserNames.Length; i++)
{
Browser browser = new Browser();
RegistryKey browserKey = browserKeys.OpenSubKey(browserNames[i]);
browser.Name = (string)browserKey.GetValue(null);
RegistryKey browserKeyPath = browserKey.OpenSubKey(@"shell\open\command");
browser.Path = browserKeyPath.GetValue(null).ToString().StripQuotes();
browsers.Add(browser);
if (browser.Path != null)
browser.Version = FileVersionInfo.GetVersionInfo(browser.Path).FileVersion;
else
browser.Version = "unknown";
}
Browser edgeBrowser = GetEdgeVersion();
if (edgeBrowser != null)
{
browsers.Add(edgeBrowser);
}
return browsers;
}
private Browser GetEdgeVersion()
{
RegistryKey edgeKey =
Registry.CurrentUser.OpenSubKey(
@"SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\Schemas");
if (edgeKey != null)
{
string version = edgeKey.GetValue("PackageFullName").ToString().StripQuotes();
Match result = Regex.Match(version, "(((([0-9.])\\d)+){1})");
if (result.Success)
{
return new Browser
{
Name = "MicrosoftEdge",
Version = result.Value
};
}
}
return null;
}
そして、返されるオブジェクトは、単純なDTOです:
public class Browser{
public string Name { get; set; }
public string Path { get; set; }
public string Version { get; set; }
}
について、あなたは何プラットフォームを話していますか? Windows?その他? 「こんにちは、私はウェブブラウザです」とは何も言いません。あなたは定義されたリストを持っていて、それらのインストールだけを検索する必要があります。 –
@ rory.apのみWindows – Zirochka
インストールされているブラウザを見つける1つの方法は、登録されているインストール済みアプリケーションのレジストリを調べ、プログラムと機能の追加と削除で表示されるリストにアクセスすることです。 –