2012-03-12 12 views
5

Próbowałem naprawić metodę, która sprawdza, czy użytkownik ma zainstalowany Skype na swoim komputerze. Ten Naprawiłem/wymyślić:Sprawdź, czy Skype jest zainstalowany

  1. mam Skype zainstalowany na moim komputerze
  2. Naprawiłem metodę pętle przez wszystkich moich zainstalowanych programów
  3. Moja metoda znajdzie moich zainstalowanych programów, ale może nie można znaleźć skype, mimo że jest zainstalowany. Ale moja metoda znajduje inne programy, które znajdują się w tym samym katalogu.

Czy ktoś ma jakieś pomysły na sprawdzenie, czy Skype jest zainstalowany na komputerze?

Sposób użyłem są simillrar do tego:

Method to loop through all installed programs

Odpowiedz

6

Wystarczy użyć rejestru:

using Microsoft.Win32; 

    //Function uses Microsoft.Win32 to check registry value of 
    //HKEY_CURRENT_USERSoftwareSkypePhoneSkypePath and returns false if 
    //the key is null 
    private bool isSkypeUser() 
    { 
     RegistryKey skype = Registry.CurrentUser.OpenSubKey(@"SoftwareSkypePhone"); 

     if (skype != null && skype.GetValue("SkypePath") != null) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

http://brcline.com/blog/?tag=skype

EDIT:

Brudne obejście polega na przechodzeniu przez foldery StartMenu w poszukiwaniu skrótu lub folderu Skype. Musisz użyć następującego wyliczenia SpecialFolder:

var startMenuPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms) 

Mam nadzieję, że pomoże!

+1

To może działać. Wystarczy się upewnić, że wartość rejestru zostanie usunięta po odinstalowaniu. W przeciwnym razie możesz uzyskać fałszywe alarmy. –

+0

Próbowałem tej metody, ale to nie działa dla mnie .. Naprawdę wiedziałem, dlaczego ... @ssg Jak sprawdzić, czy wartość rejestru nadal istnieje? –

+1

Odinstaluj Skype ze swojego komputera i sprawdź, czy jego wartość nie zniknęła. Jeśli pozostanie, ta metoda nie zadziała. Możesz wypróbować inne klucze rejestru związane ze Skype. Możesz monitorować aktywność rejestru za pomocą ProcMon z Sysinternals. –

Powiązane problemy