2013-07-22 1 views
0

내 응용 프로그램에서 레지스트리 키를 읽으려고합니다. 이것은 32 비트 프로세스이며 64 비트 시스템 (Win7 64 비트)에서 실행 중입니다. 이건 내 코드입니다 : 내 시스템에서32 비트 응용 프로그램에서 WOW6432 버전의 키를 반환 할 수 없습니다.

string value64 = string.Empty; 
RegistryKey localKeyRegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);  
localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); 
if (localKey != null) 
{ 
    value64 = localKey.GetValue("RegisteredOrganization").ToString(); 
    MessageBox.Show(value64, "value64"); 
} 

이 키의 값 (마이크로 소프트 \ 윈도우 NT를 \ CurrentVersion \ SOFTWARE) 비어,이 아래에있는 값 (SOFTWARE \ WOW6432Node 마이크로 소프트 \ 윈도우 NT를 \ CurrentVersion \) "Microsoft"입니다. 그러나 메시지 상자의 value64는 비어 있습니다! "Microsoft"가되어서는 안됩니까?

+0

"모든 CPU"를 타겟팅하지 않는 이유가 있습니까? –

+0

@RowlandShaw 이것을 x86을 대상으로해야하는 다른 응용 프로그램에서 사용할 것입니다. – user2126878

답변

0

당신은 당신이 그 64 비트 시스템에있다 (대신 SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion에서 검색합니다 RegistryView.Registry32을 지정하면 그래서 SOFTWARE\Microsoft\Windows NT\CurrentVersion

에서 값을 검색합니다 RegistryView.Registry64를 지정되며, 32 비트 시스템에 WOW6432Node는 존재하지 않으므로 대신 정상 하이브 만 사용합니다.)

RegistryView.Default을 지정하면 호출 프로세스의 bitness에 따라 하이브를 선택합니다.

관련 문제