2009-06-12 61 views

回答

2

有越来越使​​用WMI安装的软件的建议方式 - 尽管不是所有的软件显示出来,所以你必须......

1)试试吧,看看他们是否会出现在所有

2)调整的例子来过滤结果仅使服务包显示

strHost = "." 
Const HKLM = &H80000002 
Set objReg = GetObject("winmgmts://" & strHost & _ 
    "/root/default:StdRegProv") 
Const strBaseKey = _ 
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\" 
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
For Each strSubKey In arrSubKeys 
    intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
     "DisplayName", strValue) 
    If intRet <> 0 Then 
     intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
     "QuietDisplayName", strValue) 
    End If 
    If (strValue <> "") and (intRet = 0) Then 
     WScript.Echo strValue 
    End If 
Next 
0

是,WMI类Win32_OperatingSystem包含所有这些信息。我可以看到通过使用PowerShell来检查我的本地机器验证此信息:

PS c:\> get-wmiobject win32_operatingsystem | ` 
      select BuildNumber, ServicePackMajorVersion, ` 
      ServicePackMinorVersion | format-table -auto 

BuildNumber ServicePackMajorVersion ServicePackMinorVersion 
----------- ----------------------- ----------------------- 
7100        0      0 

注:Powershell的只能运行在XP或更高,但你可以通过传递 - 电脑参数来获取-WmiObject可以查看远程系统。

0

一个VBScript例如从Hey, Scripting Guy!系列:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colOperatingSystems = objWMIService.ExecQuery _ 
    ("Select * from Win32_OperatingSystem") 

For Each objOperatingSystem in colOperatingSystems 
    Wscript.Echo objOperatingSystem.ServicePackMajorVersion _ 
     & "." & objOperatingSystem.ServicePackMinorVersion 
Next