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