Winemaker Developer

программировать нужно с душой

Получаем информацию о браузерах на C#

В одном из своих проектов я столкнулся с проблемой, что мне нужно было необходимо получить информацию о установленных браузерах на клиентской Windows-машине, чтобы скачивать необходимые компоненты с сервера.

Единого варианта не было, и я предложил свой вариант, как можно это сделать, а именно получить версии Chrome и Firefox и д.р. используя C#.

Могут возникнуть проблемы с поиском браузеров на 64bit версии Windows XP и Vista!

Перейдем непосредственно к коду.

Создаём класс GetVersionBrowser.cs и вставляем следующий код:

    public class CheckVersion
    {
        public static List<Browser> GetBrowsers()
        {
            //64-битные браузеры находятся в другом месте
            RegistryKey browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet") ??
                                      Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");
            if (browserKeys != null)
            {
                string[] browserNames = browserKeys.GetSubKeyNames();
                var browsers = new List<Browser>();
                foreach (var t in browserNames)
                {
                    var browser = new Browser();
                    var browserKey = browserKeys.OpenSubKey(t);
                    if (browserKey != null)
                    {
                        browser.NameBrowser = (string) browserKey.GetValue(null);
                        var browserKeyPath = browserKey.OpenSubKey(@"shell\open\command");
                        browser.PathBrowser = browserKeyPath?.GetValue(null).ToString().StripQuotes();
                        var browserIconPath = browserKey.OpenSubKey(@"DefaultIcon");
                        browser.IconPath = browserIconPath?.GetValue(null).ToString().StripQuotes();
                    }
 
                    browsers.Add(browser);
                    browser.Version = browser.PathBrowser != null
                        ? FileVersionInfo.GetVersionInfo(browser.PathBrowser).FileVersion
                        : "unknown";
                }
                return browsers;
            }
            return null;
        }
    }
 
    public static class Extensions
    {
        public static string StripQuotes(this string s)
        {
            if (s.EndsWith("\"") && s.StartsWith("\""))
                return s.Substring(1, s.Length - 2);
            return s;
        }
    }
 
    public class Browser
    {
        public string NameBrowser { get; set; }
        public string PathBrowser { get; set; }
        public string IconPath { get; set; }
        public string Version { get; set; }
    }

В принципе всё, этот код даст вам информацию о всех установленных браузерах на клиентской машине.

Добавляем для наглядности на форму элемент richTextBox с именем richTextBox1 и вызываем код, чтобы получить информацию о браузерах:

var listBrowsers = VersionBrowser.CheckVersion.GetBrowsers();
            foreach (var lb in listBrowsers)
            {
                richTextBox1.AppendText(
                    $"{lb.NameBrowser}: \n\tPath: {lb.PathBrowser} \n\tVersion: {lb.Version} \n\tIcon: {lb.IconPath}"+Environment.NewLine);
            }

В итоге вы получите результат как картинке ниже:

Результат работы кода

На этом всё. Удачного дня и кодинга!