C# 访问HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

C# 访问HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData,c#,registry,registrykey,C#,Registry,Registrykey,有人能告诉我为什么我不能访问“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData”的注册表项吗 如果我查询“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer”的GetSubKeyNames,它只返回一个值为“Secure”--->其他所有子键在哪里 谢谢。您很可能正在64位版本的Wi

有人能告诉我为什么我不能访问
“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData”
的注册表项吗

如果我查询“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer”的
GetSubKeyNames
,它只返回一个值为
“Secure”
--->其他所有子键在哪里


谢谢。

您很可能正在64位版本的Windows上运行您的程序,并且该程序被迫以32位模式运行。注册表重定向程序将使您实际读取HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432节点中的键。是的,它还有一个Microsoft\Windows\CurrentVersion\Installer密钥,但它是空的。使用Regedit.exe进行比较


最简单的修复方法是移除强制力。项目+属性,构建选项卡,将目标平台设置设置为AnyCPU。如果您有VS2012及以上版本,请取消选中“首选32位”选项。对发布配置重复上述步骤。如果必须在32位模式下运行,则可以使用.NET 4+RegistryKey.OpenBaseKey()方法,传递RegistryView.Registry64。

请发布几行代码。如何构造注册表项实例?真正的问题是“为什么要尝试访问注册表项
HKEY\U LOCAL\u MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData
?”这些信息是内部操作系统数据。@Raymond Chen:一种可能是安装崩溃或硬盘驱动器出现故障,其中一堆…\installer\Folders被留下了8dot3引用(其中1061个),无法摆脱8dot3。