vba - 为什么 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
解决方案
推荐阅读
- c++ - 有人可以为此提供伪代码吗?
- sql - 将两列与 SQL Server 2008 中其他表中的列连接并比较?
- c# - ChromelyResponse.Status 被忽略
- r - 为什么这个线性模型的拟合值不连续?
- c# - 带有 Access 数据库的 ASP.NET 中的插入子句问题
- spring-security - Spring Security 中的 hasRole() 和 hasAuthority() 有什么区别
- c# - 页面加载后修改viewbag内容
- python - 无法打开之前打开的 H5
- video-streaming - 带有 iframe 信息的实时 HLS 生成器
- postgresql - 如何正确分组 Postgres 数据