64位Windows上的注册表重定向
我正在运行64位Windows,我想使用C#创建注册表项HKCUSoftwareClassesWow6432NodeCLSID{myguid}InprocServer32
。
我应该告诉它写什么注册表项,以便将它重定向到上面的键? 这也适用于32位Windows。
我正在编译我的应用程序以定位x86。
如果您使用的是.net 4,则应使用RegistryView
枚举。 调用OpenBaseKey
时传递RegistryView.Registry32
。 使用HKCUSoftwareClassesCLSID{myguid}InprocServer32
作为密钥,让重定向器完成工作。
如果您使用的是旧版本的.net,我恐怕您需要p / invoke本机Win32 API。
如果您恰好是针对x86,那么您不需要做任何事情。 注册表重定向器将做正确的事情并将您的注册表访问重定向到注册表的32位视图。 您只需要从64位进程中采取上述步骤。
64位版本的Windows通过“Windows on Windows”(WoW)子系统模拟32位function。
在注册表的情况下,出于兼容性原因,它们将32位密钥移动到特殊子密钥。 它会自动将32位注册表操作重定向到HKEY_LOCAL_MACHINESOFTWAREWow6432Node
。 有关注册表重定向器的MSDN主题可以找到更多详细信息。
您可以使用RegistryView
上的RegistryView
枚举显式打开32位视图,并直接访问HKCUSoftwareClassesCLSID{myguid}InprocServer32
。 这将自动访问64位系统上的WOW64节点和32位系统上的普通键。
由于您的目标是x86,因此只需使用HKCUSoftwareClassesCLSID{myguid}InprocServer32
在所有平台上运行。
默认情况下,您的C#应用程序使用“Any CPU”编译(这是默认设置 – 这意味着您的程序将在x86计算机上作为x86 exe运行,在x64计算机上运行x64)。 您要做的是将设置更改为Win32。 现在你的程序将始终作为x86 exe运行,因此它将被Windows自动重定向到WOW6432Node。 当您在x64计算机上访问HKCU Software Classes CLSID {myguid} InprocServer32时,您将被重定向到所需的密钥。
上述就是C#学习教程:64位Windows上的注册表重定向分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1013655.html