使用VBScript获取已安装更新的列表,作为Windows更新的一部分

时间:2014-04-15 09:31:54

标签: windows vbscript operating-system

我是VBScript的新手,我需要使用VBScript或任何内容获取已安装软件的列表(例如Microsoft Visual C ++ 2010等)作为Windows更新的一部分。

如果安装的软件列在添加/删除程序使用WMIC 下,我们可以获取列表。

wmic产品,其中\"名称如

但是,例如,Microsoft Visual C ++ 2010作为Windows更新的一部分安装,未在“添加/删除程序”下列出。

Microsoft Visual C ++ 2010列在注册表中。在这里,我需要使用VBScript或任何。

获取此类软件的列表

我需要Windows 2008 R2标准操作系统的这个脚本。

任何方向或解决方案都会有很大的帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要使用wmi注册表类来枚举注册表中的密钥。


StdRegProv类的EnumKey方法 EnumKey方法枚举路径的子键。有关通过WMI访问注册表的一般信息,请参阅获取注册表数据。

本主题使用托管对象格式(MOF)语法。有关使用此方法的信息,请参阅调用方法。

uint32 EnumKey(
  uint32 hDefKey = 2147483650,
  string sSubKeyName,
  string sNames[]
);

参数 hDefKey [in,optional]包含sSubKeyName路径的注册表树,也称为配置单元。默认值为HKEY_LOCAL_MACHINE。 请注意,HKEY_DYN_DATA仅适用于Windows 95和Windows 98计算机。

以下树在Winreg.h中定义。

Name Value 
HKEY_CLASSES_ROOT 2147483648
0x80000000 
HKEY_CURRENT_USER 2147483649
0x80000001 
HKEY_LOCAL_MACHINE 2147483650
0x80000002 
HKEY_USERS 2147483651
0x80000003 
HKEY_CURRENT_CONFIG 2147483653
0x80000005 
HKEY_DYN_DATA 2147483654
0x80000006 

sSubKeyName [in]包含要枚举的子键的路径。 sNames [out]子键字符串数组。 回报价值 在C ++中,该方法返回uint32值,如果成功则返回0(零)。如果函数失败,则返回值是在Winerror.h中定义的非零错误代码。在C ++中,您可以将FormatMessage函数与FORMAT_MESSAGE_FROM_SYSTEM标志一起使用,以获取错误的一般描述。您还可以在WMI错误常量下查找返回值。 在脚本或Visual Basic中,如果成功,该方法返回一个0(零)的整数值。如果函数失败,则返回值是非零错误代码,您可以在WbemErrorEnum中查找。

示例代码

有关脚本代码示例,请参阅WMI任务:注册表和TechNet ScriptCenter脚本存储库。其他示例在“进一步信息”中列出的书籍和文章中。

有关C ++代码示例,请参阅WMI C ++应用程序示例。

以下VBScript示例显示了如何使用EnumKey方法枚举在注册表项中列为子键的服务:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

您可以将脚本保存为扩展名为.vbs的文件,并通过在包含该脚本的文件夹中执行命令行将输出发送到文件: cscript Filename.vbs> output.txt的

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ 
    strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
WScript.Echo "Subkeys under " _
    & "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services"
For Each subkey In arrSubKeys
    WScript.Echo subkey
Next

这解释了它的存储位置。

开始 - 所有程序 - 附件 - 右键单击​​“命令提示符”,然后选择“以管理员身份运行”。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。表格格式的类型

wmic /output:"%userprofile%\desktop\WindowsInstaller.html" product get /format:htable

或表格格式

wmic /output:"%userprofile%\desktop\WindowsInstaller.html" product get /format:hform

它将在桌面上创建一个html文件。

请注意

这不是完整列表。这只是与Windows Installer一起安装的产品。一切都没有特色。

但正如我在上一篇文章中所述,几乎所有内容都列在注册表中。

所以要在命令提示符下看到它

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s

或在文件中

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s>"%userprofile%\desktop\WindowsUninstall.txt"

以不同的格式在记事本中查看

单击开始 - 所有程序 - 附件 - 右键单击​​命令提示符,然后选择以管理员身份运行。键入Regedit并导航到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

右键单击“卸载”键,然后选择“导出”。如果您保存为reg文件(还有文本文件,它们的文本格式略有不同),您需要右键单击该文件并选择“编辑”进行查看。

查看Windows更新

wmic /output:"%userprofile%\desktop\WindowsUpdate.html" qfe  get /format:htable