프로그램 추가 제거 체크
http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/94c2f14d-c45e-4b55-9ba0-eb091bac1035/
http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/94c2f14d-c45e-4b55-9ba0-eb091bac1035/
The solution is to search for 3 places in registry:
1. SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall inside CurrentUser
2. SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall inside LocalMachine
3. SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall in LocalMachine
public static bool IsApplictionInstalled(string p_name) { string displayName; RegistryKey key; // search in: CurrentUser key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // search in: LocalMachine_32 key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // search in: LocalMachine_64 key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // NOT FOUND return false; }