2013-07-22 60 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"); 
} 

在我的系統該鍵下的值(SOFTWARE \微軟\的Windows NT \ CURRENTVERSION)是空的,並且在此值(SOFTWARE \ WOW6432Node \微軟\的Windows NT \ CURRENTVERSION)是「微軟」。但消息框中的值64是空的!它不應該是「微軟」嗎?

+0

是不是有沒有針對「任何CPU」的原因? –

+0

@RowlandShaw我將在另一個必須針對x86的應用程序中使用它 – user2126878

回答

0

您指定RegistryView.Registry64所以它會從SOFTWARE\Microsoft\Windows NT\CurrentVersion

被檢索值如果指定RegistryView.Registry32它將從SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion代替檢索(即,在64位系統上;在32位系統上WOW6432Node不存在,所以它只會使用普通的配置單元)。

我認爲如果你指定RegistryView.Default它會根據調用進程的位數選擇配置單元。

相關問題