2013-07-26 73 views
0

我需要閱讀HKEY_LOCAL_MACHINE \ SOFTWARE的默認值\ Wow6432Node \類\ CLSID {CF2CF428-325B-48d3-8CA8-7633E36E5A32} \ InprocServer32的C#廣東話訪問某些註冊表值

在我的項目選擇「首選32位「未選中,平臺目標是任何CPU,我在Windows-7 64位操作系統上運行。

我嘗試了一切,並閱讀了很多有關此問題的主題,但我仍無法讀取此值。

請問,你能寫出實際的代碼嗎?

我試過了,

RegistryKey LocalMachine32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32); 
RegistryKey location = LocalMachine32.OpenSubKey(@"Software\Wow6432Node\Classes\CLSID\{CF2CF428-325B-48d3-8CA8-7633E36E5A32}\InprocServer32", true); 
String myValue = location.GetValue("").ToString(); 

RegistryKey LocalMachine64 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); 
RegistryKey location = LocalMachine64.OpenSubKey(@"Software\Wow6432Node\Classes\CLSID\{CF2CF428-325B-48d3-8CA8-7633E36E5A32}\InprocServer32", true); 
String myValue = location.GetValue("").ToString(); 

RegistryKey LocalMachine64 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); 
RegistryKey location = LocalMachine64.OpenSubKey(@"Software\Classes\CLSID\{CF2CF428-325B-48d3-8CA8-7633E36E5A32}\InprocServer32", true); 
String myValue = location.GetValue("").ToString(); 

RegistryKey LocalMachine32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32); 
RegistryKey location = LocalMachine32.OpenSubKey(@"Software\Classes\CLSID\{CF2CF428-325B-48d3-8CA8-7633E36E5A32}\InprocServer32", true); 
String myValue = location.GetValue("").ToString(); 

,但沒有運氣:(

回答

0

據我知道你不能與.NET框架做這個電話;在過去,我已經使用的P/Invoke調用ADVAPI32.DLL的RegOpenKeyEx,的RegQueryValueEx和方法的RegQueryValueEx從特定位數註冊表中讀取

這裏是這樣做的一個例子的文章:

http://blogs.msdn.com/b/cumgranosalis/archive/2005/12/19/win64registrypart2.aspx

編輯: 它不會在Windows 7中工作的原因(與其他潛在有用的資源,一起)在這裏討論:

How to open a WOW64 registry key from a 64-bit .NET application