A .NET Framework Mgmtclassgen.exe eszköze alapértelmezésben a következő mappában érhető el: <winroot>:\\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin\.
A WMI rendszer elérésére a System.Management névteret használhatjuk fel, azonban ez nem annyira kényelmes, mert csak közvetett módon érhetjük el a WMI objektum modelljét, és ennek elemeit.
A segédprogram felhasználásával viszont generálhatunk egy menedzselt osztályt minden egyes WMI osztályhoz úgy, mintha egy Webes szerviz alkalmazás eléréséhez generálnánk egy Webes referenciát, és azt elérő proxy osztályt. Itt is egy ilyen proxy funkciójú osztályt kapunk, melynek segítségével elérhetjük az adott WMI osztály property-jeit, és metódusait.
A segédalkalmazás használatának parancssori szintaxisa a következő:
mgmtclassgen <osztály neve> [opciók]
Az osztály neve itt egy WMI osztály nevét tartalmazza, például Win32_Process. A megadható kapcsolók funkcióit a következő táblázat tartalmazza:
| Opciók |
Jellemző |
| /l nyelv |
A forráskód nyelve, melyben generálni kell az adott osztályt. |
| /m számítógép neve |
Számítógép neve, melynek WMI rendszeréhez kapcsolódni szándékozunk. Alapértelmezésben ez a lokális rendszer. |
| /n elérési útvonal |
A WMI névtér elérési útvonala, mely alapértelmezésben root\cimv2. |
| /p elérési út |
A generált osztályt tartalmazó forrásállomány elhelyezésének elérési útvonala. |
| /pw jelszó |
Amennyiben nem lokális rendszerbe szeretnénk bejelentkezni, itt megadható a szükséges jelszó. |
| /u usernév |
Amennyiben nem lokális rendszerbe szeretnénk bejelentkezni, itt megadható a szükséges felhasználónév. |
| /? |
Kapcsolók kiírása. |
Az alkalmazásunkban felhasznált Process.cs forrásállományt a következő parancssori utasítással generáltuk:
mgmtclassgen Win32_Process /n root\cimv2 /l CS /p <winroot>:\\Process.cs
A mellékelt példában két osztályhoz generáltunk menedzselt osztályt: Win32_Process és a Win32_LogicalDisk. Az előbbit felhasználjuk arra, hogy kilistázzuk a számítógépen aktuálisan futó folyamatok neveit, a másikat pedig ahhoz, hogy információkat kérdezzünk le a C:\ meghatónkról a WMI segítségével.
A process-ek listája a következő kóddal kérdezhető igen egyszerűen, ha a Process osztályt elérjük a generált állományból:
foreach(Process p in Process.GetInstances())
{
listBox1.Items.Add(p.Name);
}
A Process osztály statikus metódusa adja meg ugyanis egy kollekcióban a folyamat-objektumok listáját, és ezek Name property-je tartalmazza a folyamat nevét.
A meghajtó információkat úgy kaphatjuk meg, hogy a LogicalDisk osztályt példányosítjuk és lekérdezzük az osztály property-jeit.
LogicalDisk ld = new LogicalDisk(new ManagementPath("win32_LogicalDisk.DeviceId=\"C:\""));
listBox2.Items.Add("Fejléc: " + ld.Caption);
...