Public Shared Function IsApplictionInstalled(p_name As String) As Boolean
Dim displayName As String
Dim key As RegistryKey
' search in: CurrentUser
key = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
For Each keyName As [String] In key.GetSubKeyNames()
Dim subkey As RegistryKey = key.OpenSubKey(keyName)
displayName = TryCast(subkey.GetValue("DisplayName"), String)
If p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) = True Then
Return True
End If
Next
' search in: LocalMachine_32
key = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
For Each keyName As [String] In key.GetSubKeyNames()
Dim subkey As RegistryKey = key.OpenSubKey(keyName)
displayName = TryCast(subkey.GetValue("DisplayName"), String)
If p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) = True Then
Return True
End If
Next
' search in: LocalMachine_64
key = Registry.LocalMachine.OpenSubKey("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")
For Each keyName As [String] In key.GetSubKeyNames()
Dim subkey As RegistryKey = key.OpenSubKey(keyName)
displayName = TryCast(subkey.GetValue("DisplayName"), String)
If p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) = True Then
Return True
End If
Next
' NOT FOUND
Return False
End Function