C#无法访问某些注册表值
本文关键字:注册表 访问 | 更新日期: 2023-09-27 18:24:55
我需要读取HKEY_LOCAL_MACHINE''SOFTWARE''Wow6432Node''Classes''CLSID{CF2CF428-325B-48d3-8CA8-7633E36E5A32}''InprocServer32 的默认值
在我的项目选项中,"首选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();
但运气不佳:(
据我所知,您无法通过.NET Framework调用来实现这一点;在过去,我曾使用P/Invoke调用advapi32.dll的RegOpenKeyEx、RegQueryValueEx和RegQueryValueEx方法来读取特定的位注册表。
下面是一篇文章,其中有一个例子:
http://blogs.msdn.com/b/cumgranosalis/archive/2005/12/19/win64registrypart2.aspx
编辑:这里讨论了它在Windows7中不起作用的原因(以及其他可能有用的资源):
如何从64位.NET应用程序打开WOW64注册表项