2009-06-12 10 views

Répondre

2

Il y a un moyen suggéré d'obtenir un logiciel installé à l'aide WMI - mais pas tous les logiciels apparaît, de sorte que vous auriez à ...

1) Essayez et voir si elles apparaissent tout

2) Régler l'exemple pour filtrer les résultats afin que les service packs montrent

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

Oui, la Win32_OperatingSystem de classe contient wmi toutes ces informations. Je peux voir vérifier ces informations en utilisant Powershell pour vérifier ma machine locale:

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

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

Note: Powershell ne fonctionne que sur XP ou plus, mais vous pouvez vérifier les systèmes à distance en passant un paramètre -Ordinateur pour obtenir-wmiobject.

0

Un exemple de VBScript Hey, Scripting Guy! série:

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