The easiest method of checking whether Skype is installed is actually to check for a Registry Key. We, of course, can’t check C:Program Files for a Skype Directory because the user could have installed elsewhere (or maybe if 64 bit the operating system did?)
Skype’s API Document provides us with the following information:
To check if Skype is installed, in regedit check if the following key exists: HKCUSoftwareSkypePhone, SkypePath . This key points to the location of the skype.exe file. If this key does not exist, check if the HKLMSoftwareSkypePhone, SkypePath key exists. If the HKCU key does not exist but the HKLM key is present, Skype has been installed from an administrator account but not been used from the current account.
Generally, I only care if the Current User has configured Skype, so I will ignore the HKEY_LOCAL_Machine information and instead rely entirely on the HKEY_CURRENT_USER information.
You must make sure you reference: Microsoft.Win32 for the registry functions or modify the snippet slightly.
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; } }