2014-04-30 1 views
2

서브 키 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData을 열려고합니다.OpenSubKey()는 레지스트리에서 하나의 경로 만 null을 반환합니다. C++

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 
} 

다음은 결과입니다 제거 키는 32 비트 레지스트리 경로에가는 것을 보여주고있다하더라도

HKEY_LOCAL_MACHINE 
SOFTWARE\Microsoft\Windows\CurrentVersion\Installer 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer 
Secure 

. 실제로 Wow6432Node을 통해 Installer의 Secure 하위 키 이름에 도달합니다.

왜? 레지스트리 32보기를 사용하도록 선언했습니다.

+0

응용 프로그램이 컴파일되는 CPU 아키텍처는 무엇이며 Windows의 CPU 아키텍처는 무엇입니까? –

+0

그것의 모든 64 비트, 왜 내가 Registry32로보기를 정의 thats. –

답변

0

글쎄, 이건 어리 석다. 나는 그 견해를 거꾸로 이해 한 것 같다. 나는 그것이 Registry32에 가서 그것이 추가 서브 키를 위해 갈 필요가 있다고 생각했지만 실제로 Registry64보기로 갈 필요가 있다고 선언했다.

관련 문제