6 Eylül 2020 Pazar

WMI ManagementObjectSearcher sınıfı

Giriş

Şu satırı dahil ederiz.

using System.Management;
Bu sınıf ile SQL gibi sorgu yapabiliyoruz. Açıklaması şöyle.
When using ManagementObjectSearcher - one can search for specific properties (instead of all by *).

Constructor - ManagementScope + ObjectQuery
Şöyle yaparız.
var managementScope = new ManagementScope();

//get disk drives
var query = new ObjectQuery("select * from Win32_DiskDrive");
var searcher = new ManagementObjectSearcher(managementScope, query);
Constructor - string olarak ManagementScope + ObjectQuery
Scope ile sorgu şöyle yapılır
ManagementObjectSearcher searcher =
            new ManagementObjectSearcher("root\\WMI",
            "SELECT * FROM MSAcpi_ThermalZoneTemperature");

foreach (ManagementObject queryObj in searcher.Get())
{
  Console.WriteLine("CurrentTemperature: {0}", (queryObj["CurrentTemperature"]));
  Console.WriteLine(queryObj);
}
Constructor - ManagementScope + SelectQuery
Şöyle yaparız
ManagementScope scope = new ManagementScope(...);
...
scope.Connect();
SelectQuery query = new SelectQuery("Select * FROM
 Win32_NetworkAdapterConfiguration");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

Constructor - WqlObject sorgu
Şöyle yapılır.
WqlObjectQuery q = new WqlObjectQuery("SELECT * FROM Win32_IDEController");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(q);
Constructor - string sorgu
Örnek
Şöyle yaparız
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"SELECT MediaLoaded FROM Win32_CDROMDrive");
ManagementObjectCollection moc = searcher.Get();
Örnek
Sadece sorgu şöyle yapılır
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

int i = 0;
foreach(ManagementObject wmi_HD in searcher.Get())
{
  // get the hardware serial no.
  wmi_HD["SerialNumber"]
  
}
Get metodu
Şöyle yaparız.
ManagementObjectSearcher mSearch
 = new ManagementObjectSearcher("Select * from Win32_SerialPort");
ManagementObjectCollection mReturn = mSearch.Get();
Eğer aldığımız nesnenin tüm alanlarını görmek istersek şöyle yaparız.
var oReturnCollection = searcher.Get();

//List all properties available
var colList = oReturnCollection.Cast<ManagementObject>().First();
foreach (var property in colList.Properties)
{
  Console.WriteLine("Property: {0} = {1}", property.Name, property.Value);
}

Hiç yorum yok:

Yorum Gönder