谁能告诉我为什么我无法访问注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"
?
如果我查询它只返回一个值是GetSubKeysNames
---- >所有其他子键在哪里?"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"
"Secure"
谢谢。
谁能告诉我为什么我无法访问注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"
?
如果我查询它只返回一个值是GetSubKeysNames
---- >所有其他子键在哪里?"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"
"Secure"
谢谢。
您在 64 位版本的 Windows 上运行程序的可能性很高,并且它被迫在 32 位模式下运行。注册表重定向器将使您真正读取 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node 中的键。是的,那个也有一个 Microsoft\Windows\CurrentVersion\Installer 键,但它是空的。使用 Regedit.exe 进行比较。
最简单的解决方法是消除强迫。Project + Properties,Build 选项卡,将 Target platform 设置为 AnyCPU。如果您有 VS2012 及更高版本,请取消勾选“首选 32 位”选项。重复发布配置。如果必须在 32 位模式下运行,则可以使用 .NET 4+ RegistryKey.OpenBaseKey() 方法,传递 RegistryView.Registry64。