Я думаю, что проблема может быть здесь:
key = Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall");
foreach (String keyName in key.GetSubKeyNames())
На 32-битном этот ключ не существует.
Поэтому вы должны использовать (для каждого проверяемого ключа)
key = ....
if (key != null)
{
foreach (String keyName in key.GetSubKeyNames())
// ....
}
Другая информация: обратите внимание, что некоторые (многие?) Ключи реестра не содержат значения displayName
, поэтому сравнение может быть неудачным.Попробуйте (просто в качестве примера) использовать имя ключа вместо displayName
, если его не существует.