访问HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData

时间:2013-11-04 13:45:11

标签: c# registry registrykey

有谁可以告诉我为什么我无法访问"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"的注册表项?

如果我查询GetSubKeysNames的{​​{1}},则只返回"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"的一个值---->所有其他子项在哪里?

感谢。

1 个答案:

答案 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。