Windows - A rendszerbe telepített alkalmazások lekérdezése

WMI 8. rész

forráskód letöltése
A Windows Management Instrumentation (WMI) szolgáltatást bemutató cikksorozatunk jelen részében a Windows Installer által feltelepített alkalmazásokkal foglalkozunk. Részletesen ismertetjük a kezelést megvalósító osztály tulajdonságait és készítünk egy szkriptet, amelyben lekérdezzük a főbb paramétereket, úgy mint telepítés dátuma, a szoftver neve, verziószáma, forgalmazójának neve és a csomag információinak helyi tárolását megvalósító fájl neve.
Cikkünkhöz mellékelve megtalálható a példában szereplő szkript "Application.vbs" néven. Használatához indítsuk el az Intézőn keresztül. Futása során megjeleníti a telepített programok listáját a képernyőn.
A szóban forgó WMI osztály neve "WIN32_Product". Az alapértelmezett "root\cimv2" névtérben található. Rendelkezésre áll a Windows NT/2000/XP operációs rendszerek mindegyikén, de Windows NT-ben csak a Service Pack 4-től kezdve. Fontos, hogy csak a Windows Installer szolgáltatáson keresztül telepített alkalmazásokat kezeli (*.msi). Az egyéb úton (pl. saját telepítővel) rendszerbe került programok kívül esnek a hatáskörén. Maga az osztály a "CIM_Product" osztály leszármazottja.
Készítsünk egy szkriptet, amelyik lekérdezi a főbb tulajdonságokat. Első lépésben definiáljunk egy "Text" nevű változót. Ebbe fogjuk elhelyezni a visszakapott eredményeket. Ezt követően egy FOR ciklust indítva létrehozzuk az osztály összes példányát (annyi lesz belőle, ahány telepített alkalmazás van). Az aktuálisan bejelentkezett felhasználó nevét és jelszavát adjuk át a WMI szolgáltatásnak ("impersonationLevel = impersonate") és egy szimpla WQL lekérdezéssel kérjük le az osztály összes tulajdonságát ( "select * from Win32_Product" ).
Text=""
for each Application in GetObject ("winmgmts: {impersonationLevel = impersonate}!root/cimv2" ).ExecQuery ( "select * from Win32_Product" )
Ezután a ciklusmagban dolgozzuk fel az eredményt, megformázva és magyarázattal ellátva a szöveget. Végül zárjuk a ciklust és az egészet jelenítsük meg a képernyőn.
   Text = Text & "Telepített szoftver: " & Application.Description & Chr (13)
   Text = Text & "A csomag helyi tárolóhelye: " & Application.PackageCache & Chr (13)
   Text = Text & "Forgalmazó: " & Application.Vendor & Chr (13)
   Text = Text & "Verziószám: " & Application.Version & Chr (13)
   Text = Text & "Telepítés dátuma: " & Application.InstallDate & Chr (13)
   Text = Text & "------------------------------" & Chr (13)
Next
   WScript.Echo Text

A fenti információkhoz a "Vezérlőpult" ("Control Panel") "Programok telepítése/törlése" ("Add/Remove Programs") segítségével is hozzájuthatunk egy kivételével és az a telepítés dátuma. Most pedig nézzük az osztály teljes referenciáját:
CIM_Product
Osztály: Win32_Product : CIM_Product
{
string Caption ;
string Description ;
string IdentifyingNumber ;
string InstallDate ;
datetime InstallDate2 ;
string InstallLocation ;
sint16 InstallState ;
string Name ;
string PackageCache ;
string SKUNumber ;
string Vendor ;
string Version ;
};
Paraméterek
string Caption
Egysoros szöveg, a termék leírását tartalmazza. Gyakran megegyezik a "Description" és "Name" tulajdonságokkal.
string Description
A termék leírása (neve).
string IdentifyingNumber
A termék azonosító száma. Nem mindig kerül kitöltésre, de ha igen, akkor a széria számot (serial number) tartalmazza.
string InstallDate
Az alkalmazás Windows-ba való telepítésének dátuma. Ezt a tulajdonságot a jövőben nem támogatják, helyette a következő tulajdonság fog szerepelni. Jelenleg azonban még sok szoftver használja.
datetime InstallDate2
A termék telepítésének dátuma (lásd az előző tulajdonságot).
string InstallLocation
Egysoros szöveg. A termék elérési útja a telepítés után (sok esetben nem kerül kitöltésre).
sint16 InstallState
Egy számot ad vissza, amely a telepítés során fellépő hiba kódja. Az alábbi értékeket veheti fel:
Érték Jelentés
-6 Az alkalmazás rosszul lett konfigurálva.
-2 Érvénytelen argumentum.
-1 Ismeretlen csomag.
1 Nem teljes értékű termék (demo).
2 Hiányos csomag.
5 Hiba nélkül feltelepítve.
string Name
A termék neve (lásd a "Description" és "Caption" tulajdonságokat).
string PackageCache
Helyileg tárolt információ a csomagról.
string SKUNumber
SKU (Stock-keeping unit) szám.
string Vendor
Forgalmazó cég adatai.
string Version
Verziószám.

WMI cikksorozat