You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

32位应用通过WMI远程查询注册表:如何关闭重定向?

解决32位应用通过WMI StdRegProv访问64位注册表并避免重复数据的问题

绕过WMI注册表重定向的核心思路

32位程序默认会被系统注册表重定向机制导向Wow6432Node分支,要访问原生64位注册表,需要在WMI调用中明确指定注册表视图或强制使用64位提供者。

方法1:调用StdRegProv方法时指定64位访问标志

使用StdRegProv的各类方法(如EnumKey、GetStringValue)时,传入KEY_WOW64_64KEY标志(十六进制值0x0100),就能绕过重定向直接访问64位注册表分支。

实际调用的参数示例:

  • 根键使用HKEY_LOCAL_MACHINE(值0x80000002)
  • 目标路径传入SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • 访问权限参数中加入0x0100

通过这个方式,你可以分别获取64位原生分支和32位Wow6432Node分支的数据。

方法2:建立WMI连接时强制使用64位提供者

在创建WMI连接的配置中,添加__ProviderArchitecture和__RequiredArchitecture上下文属性,强制WMI使用64位的注册表提供者,这样32位程序访问HKLM:\SOFTWARE\...时会直接指向64位分支。

以C#代码为例:

ConnectionOptions options = new ConnectionOptions();
options.AdditionalContext["__ProviderArchitecture"] = 64;
options.AdditionalContext["__RequiredArchitecture"] = true;
// 后续用这个options建立WMI连接

解决数据重复的建议

获取两个分支的数据后,用软件的唯一标识(比如ProductCode、DisplayName+DisplayVersion组合)做去重判断,剔除重复记录——部分软件会同时在64位和32位注册表分支留下记录,但实际是同一个安装实例。

内容的提问来源于stack exchange,提问作者lijevosmetalo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:54:50