【发布时间】:2014-04-30 13:40:24
【问题描述】:
我正在尝试打开子密钥HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData。
我是这样定义的:
RegistryKey^ HkeylmPath32 = RegistryKey::OpenBaseKey(RegistryHive::LocalMachine, RegistryView::Registry32);
RegistryKey^ Test = HkeylmPath32->OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData");
但它返回 null。我在程序中有各种其他注册表调用,它们都可以。正是这个给我带来了问题。我该如何解决这个问题?
我在 PowerShell 中运行了这个:
$uninstallkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"
$reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry32')
$regkey = $reg.OpenSubKey($uninstallkey)
$subkeys = $regkey.GetSubKeyNames()
write-host $reg
write-host $uninstallkey
write-host $regkey
foreach($key in $subkeys){
write-host $key
}
这是结果:
HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
Secure
即使卸载键显示它将进入 32 位注册表路径。它实际上是通过Wow6432Node 到达Installer 中的Secure subkeyname。
为什么?我已经声明它使用 Registry32 视图。
【问题讨论】:
-
应用程序编译的 CPU 架构是什么?你的 Windows 有什么 CPU 架构?
-
都是 64 位的,所以我将视图定义为 Registry32。
标签: c++-cli registrykey