我可以从注册表中读取已安装应用程序的列表:
@"SOFTWAREMicrosoftWindowsCurrentVersionUninstall"
以及在Vista和7 上
@"SOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall"
但在Vista中,当我单击"查看已安装的更新"时,会显示更新列表。如何从注册表中读取此更新列表?在这个更新是Internet Explorer,我也必须阅读它。密钥@"SOFTWAREWow6432NodeMicrosoftUpdates"
仅包含三个更新,但在"控制面板"->"程序和功能"的列表中还有更多的应用程序和更新。如何从注册表中读取所有内容?
感谢
使用WMI是解决该问题的正确方法。具体来说,Win32_QuickFixEngineering
类就是您想要的。
这在Windows Vista上应该可以正常工作。您的问题源于这样一个事实:从Windows Vista开始,注册表中没有列出由基于组件的服务(CBS)安装的更新。
示例VBScript代码:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "rootcimv2")
Set colQuickFixes = objWMIService.ExecQuery _
("Select * from Win32_QuickFixEngineering")
For Each objQuickFix in colQuickFixes
Wscript.Echo "Description: " _
& objQuickFix.Description
Wscript.Echo "Hotfix ID: " & objQuickFix.HotFixID
Next
谷歌搜索显示,有些人已经编写了一个完整的VBScript来获取这些信息。它甚至将输出格式化为一个漂亮的HTML文件。