Необходимо учитывать перенаправление реестра ; это реальная проблема здесь. На 32-битном компьютере ключ, который вам нужен, не имеет WoW6432Node в пути.
Вы пытаетесь удалить
HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}
из 32-битного представления реестра. Microsoft очень ясно, что вы не должны жестко кодировать WoW6432Node в своих приложениях:
Перенаправленные ключи сопоставляются с физическими местоположениями в Wow6432Node. Например, HKEY_LOCAL_MACHINE \ Software перенаправляется на HKEY_LOCAL_MACHINE \ Software \ Wow6432Node. Однако физическое местоположение перенаправленных ключей должно считаться зарезервированным системой. Приложения не должны напрямую обращаться к физическому местоположению ключа, поскольку это местоположение может измениться.
Так что удалите этот ключ, позвонив
DeleteSubKey(@"HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}")
Но используйте перенаправитель, чтобы убедиться, что вы работаете с 32-разрядным представлением реестра.
В .NET вы можете достичь того, что вам нужно, двумя способами.
- Нацельтесь на x86 и пусть перенаправление сделает всю работу за вас.
- Если вы нацелены на x64 или AnyCPU, вам нужно использовать
RegistryView.Registry32
(новое в .NET 4), чтобы открыть 32-битное представление реестра. Если у вас нет .NET 4, тогда вам нужно P / Invoke .