Aaliya Anwari Ответов: 2

В моем приложении windows я хочу проверить, установлен ли firefox или нет на машине, на которой запущено это приложение.как я могу?


Я не могу читать реестр из-за некоторых проблем с безопасностью и разрешениями, и через класс WMI я получаю список приложений, которые установлены через msi.Есть ли какой-нибудь способ проверить, установлен ли firefox в syatem или нет, не читая раздел реестра?
Кроме того, я хочу запустить некоторые команды программно, чтобы установить аддоны в Firefox.
Я пробовал это в этом списке программ, которые я не получаю Mozilla Firefox.

Что я уже пробовал:

public static string GetFireFox()
     {
         string name = String.Empty;

         try
         {
             List<string> programmes = new List<string>();
             ManagementObjectSearcher objMOS = new ManagementObjectSearcher("Select * FROM Win32_Product");
             ManagementObjectCollection objMOC = objMOS.Get();

             foreach (ManagementObject objMO in objMOC)
             {
                 object tempMacAddrObj = objMO["Name"];

                 if (tempMacAddrObj == null)
                 {
                     continue;
                 }

                     name = tempMacAddrObj.ToString();
                     programmes.Add(name);


                 objMO.Dispose();

             }

             name = name.Replace(":", "");

             return name;
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Programme");
             return name;
         }
     }

2 Ответов

Рейтинг:
2

OriginalGriff

Видеть здесь: Получение установленных браузеров и версии C# / веб-блог Робба Сэдлера[^]- он собирает установленные браузеры из реестра teh.


Aaliya Anwari

Привет,
Я не могу читать ключи из реестра из-за проблем безопасности на клиентской машине.Есть ли другой способ?

Рейтинг:
2

Member 12920622

Чтобы импортировать его в свое приложение, используйте следующее


foreach (Browser browser in GetBrowsers())
{
Console.WriteLine(string.Format("{0}: \n\tPath: {1} \n\tVersion: {2} \n\tIcon: {3}", browser.Name, browser.Path, browser.Version, browser.IconPath));
}
Console.ReadKey();
}

public static List<Browser> GetBrowsers()
{
RegistryKey browserKeys;
//on 64bit the browsers are in a different location
browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet");
if (browserKeys == null)
browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");
string[] browserNames = browserKeys.GetSubKeyNames();
var 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 = (string)browserKeyPath.GetValue(null).ToString().StripQuotes();
RegistryKey browserIconPath = browserKey.OpenSubKey(@"DefaultIcon");
browser.IconPath = (string)browserIconPath.GetValue(null).ToString().StripQuotes();
browsers.Add(browser);
if (browser.Path != null)
browser.Version = FileVersionInfo.GetVersionInfo(browser.Path).FileVersion;
else
browser.Version = "unknown";
}
return browsers;
}
}


internal static class Extensions
{
///
/// if string begins and ends with quotes, they are removed
///
internal static String StripQuotes(this String s)
{
if (s.EndsWith("\"") && s.StartsWith("\""))
{
return s.Substring(1, s.Length - 2);
}
else
{
return s;
}
}
}


class Browser
{
public string Name { get; set; }
public string Path { get; set; }
public string IconPath { get; set; }
public string Version { get; set; }
}
}


Aaliya Anwari

Я не могу читать и записывать ключи из реестра на клиентской машине из-за проблем с разрешениями.

Aaliya Anwari

Привет,
Как я могу проверить, установлен ли конкретный аддон, например MozRepl, autoitmenu, в firefox или нет программно или с помощью команд