A mellékelt példában a Form ListBox kontroljában jelennek meg a felhasználói fiókok információi. A fiókokkal kapcsolatban számtalan információ lekérdezhető, azonban a cikkben ezek közül csupán öt jellemzőt emelünk ki, melyek talán a legfontosabbak. Lássuk a műveletet.
A ManagementScope osztály segítségével kapcsolódhatunk a műveletvégző névtérhez.
ManagementScope msc = new ManagementScope("root\\cimv2");
A következő lépés, hogy összeállítjuk az utasítást. Ennek formája most a következő:
SELECT * FROM Win32_UserAccount WHERE Domain = <domain név>
A Domain neve a lokális gépnevet takarja.
A Win32_UserAccount osztályt fogjuk most elérni, melynek property-jei tartalmazzák az adott felhasználóra vonatkozó információkat.
string qStr = "SELECT * FROM Win32_UserAccount WHERE Domain = \"" + domain + "\"";
Szükség van egy lekérdező osztályra, mely megkapja a fent összeállított utasítást.
SelectQuery q = new SelectQuery(qStr);
Ezt követően létrehozunk egy ManagementObjectSearcher osztályt, mely abban segít bennünket, hogy az összes tulajdonságon, mint egy tömbön, végig tudjunk menni.
ManagementObjectSearcher qry;
ManagementObjectCollection qCollection;
...
qry = new ManagementObjectSearcher(msc,q);
qCollection = qry.Get();
Ezt a tömböt szolgáltatja az osztály Get függvénye.
A kollekció minden eleme elérhető ManagementObject osztályon keresztül. Az objektum esetében névvel hivatkozhatunk az egyes property-k értékére. Ezek a property-k már a jellemzőket tartalmazzák. Ezeket helyezzük el a listában.
foreach(ManagementObject mo in qCollection)
{
listBox1.Items.Add("Felhasználó teljes neve: " + mo["FullName"]);
...
}
A megoldásban a következő jellemzőket gyűjtöttük ki:
- FullName: a felhasználó teljes neve
- SID: biztonsági azonosító
- Description: szöveges jellemzők
- PasswordChangeable: megváltoztatható-e a jelszó
- Status: a felhasználói fiók állapota