0

我需要读取 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();

但没有运气:(

4

1 回答 1

0

据我所知,您不能使用 .NET Framework 调用来执行此操作;过去,我使用 P/Invoke 调用 advapi32.dll 的 RegOpenKeyEx、RegQueryValueEx 和 RegQueryValueEx 方法来读取特定位数注册表。

这是一篇文章,其中包含这样做的示例:

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

编辑:这里讨论了它在 Windows 7 中不起作用的原因(以及其他可能有用的资源):

如何从 64 位 .NET 应用程序打开 WOW64 注册表项

于 2013-07-26T05:58:58.297 回答