Как проверить, установлен ли OpenOffice программно с помощью C # - PullRequest
3 голосов
/ 21 октября 2010

как проверить, установлен ли OpenOffice программно с помощью c #

Ответы [ 3 ]

3 голосов
/ 21 октября 2010
     public  bool isOpenofficeInstalled()
        {


        //The registry key:
        string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
        using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey))
        {
            bool flag = false;
            //Let's go through the registry keys and get the info we need:
            foreach (string skName in rk.GetSubKeyNames())
            {
                using (RegistryKey sk = rk.OpenSubKey(skName))
                {
                    try
                    {
                        //If the key has value, continue, if not, skip it:
                      //  if (((sk.GetValue("DisplayName")).ToString() == "OpenOffice.org 3.2"))
                        if((sk.GetValue("DisplayName")).ToString() == "OpenOffice.org 3.2")
                        {

                            flag = true;
                            ////install location ?
                            //if (sk.GetValue("InstallLocation") == null)
                            //    Software += sk.GetValue("DisplayName") + " - Install path not known\n"; //Nope, not here.
                            //else
                            //    Software += sk.GetValue("DisplayName") + " - " + sk.GetValue("InstallLocation") + "\n"; //Yes, here it is...
                        }
                    }
                    catch (Exception)
                    {

                    }
                }
            }
            return flag;
        }


    }
1 голос
/ 19 декабря 2013

Вот решение, которое получает место запуска программы по умолчанию для открытия файла odt. Пока сопоставление файлов не было изменено, это работает независимо от того, какая версия установлена.

(это VB.NET)

Dim odt = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(".odt")
Dim linkedValue = odt.GetValue("")
Dim linkedKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(linkedValue)
Dim openWith = linkedKey.OpenSubKey("Shell\Open\Command").GetValue("")
Dim O As String = CStr(openWith)

If O.Contains("swriter.exe") Then
// proceed with code
Else
// error message
End If
0 голосов
/ 21 октября 2010

То же, что и на любом другом языке?Поиск в известных местах в файловой системе для исполняемого файла, который запускает открытый офис?Проверить библиотеки?Разобрать вывод "which openoffice"?

Есть много вариантов, и я бы сказал, что большинство из них не будут надежными.

...