首页 > 解决方案 > 为什么 VBScript 可以读取某些 Windows 注册表值,而 VBA 不能读取?

问题描述

我正在尝试使用 VBScript 和 VBA 读取注册表值。

这在 VBScript 中有效,但在 VBA 中它返回以下读取错误:

Set objshell = CreateObject("WScript.Shell")
ID = objshell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID")

在此处输入图像描述

而且我注意到,无论是否以管理员身份运行,我实际上都看不到 regedit 应用程序中的值。这与注册表虚拟化有关吗?

根据注册表重定向评论更新

由于上面的代码在 64 位 Office 上运行,应该可以制作这样的东西,但是 32 位部分仍然会引发错误。

#If Win64 Then ' 64 bit Office
    Debug.Print CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID")
#Else          ' 32 bit Office
    Debug.Print CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\ProductID")
#End If

标签: vbawindowsvbscriptregistry

解决方案


推荐阅读