2012-03-12 2 views
5

Я попытался исправить метод, который проверяет, установлен ли пользователь Skype на своем компьютере. Это я установил/придумывают:Проверьте, установлен ли Skype

  1. меня установлен на моем компьютере Skype
  2. Я исправил метод, который перебирает все мои установленных программ
  3. Мой метод находит мои установленные программы, но это может не найти skype, хотя он установлен. Но мой метод находит другие программы, которые находятся в одном каталоге.

Есть ли у кого-нибудь идеи о том, как проверить, установлена ​​ли Skype на компьютер?

Метод, который я использовал в simillrar этого:

Method to loop through all installed programs

ответ

6

Просто используйте реестр:

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:

Грязным обходным путем является прохождение через папки StartMenu, которые ищут ярлык или папку Skype. Вы должны использовать следующее перечисление SpecialFolder:

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

Надеюсь, это поможет!

+1

Это может сработать. Просто убедитесь, что значение реестра удалено после удаления. В противном случае вы можете получить ложные срабатывания. –

+0

Я пробовал этот метод, но тот не работает для меня .. Я действительно знаю, почему ... @ssg Как проверить, существует ли значение реестра? –

+1

Удалите Skype с вашего компьютера и посмотрите, останется ли значение или удаляется. Если он останется, этот метод не будет работать. Вы можете протестировать другие ключи реестра относящиеся к Skype. Вы можете контролировать активность реестра с помощью ProcMon от Sysinternals. –