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

安装包自定义操作中VBScript调用EnumKey查询注册表返回wbemErrNotFound问题

问题根源

你遇到的wbemErrNotFound(2)错误不是权限问题,是64位系统下的注册表重定向导致的:

  • 手动运行VBScript时,默认调用的是64位WScript.exe,访问的是64位注册表视图,对应路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components真实存在,因此运行正常
  • 嵌入32位安装包的自定义操作默认运行在32位上下文,访问HKLM\SOFTWARE路径时会被系统自动重定向到HKLM\SOFTWARE\Wow6432Node,该路径下没有你要枚举的注册表项,因此返回找不到的错误

解决方案

可任选以下一种方案处理:

方案1:指定自定义操作为64位运行

根据你使用的打包工具调整配置即可:

  • WiX:在自定义操作的配置项中添加Win64="yes"属性
  • InstallShield:在自定义操作的高级设置中勾选「以64位进程运行」选项

方案2:修改VBScript代码强制访问64位注册表视图

不需要修改安装包配置,直接调整WMI连接字符串,显式指定访问64位注册表架构即可,将代码中创建oReg对象的行修改为:

Set oReg = GetObject( "winmgmts:{impersonationLevel=impersonate,Architecture=64}!//" & sComputer & "/root/cimv2:StdRegProv" )

额外添加的Architecture=64参数会强制WMI访问64位注册表视图,不受当前进程架构影响,32位上下文中也能正常读取目标路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:45:04