Managed WMI Sınıfları Oluşturma

     C# ile WMI kodu yazıyorsanız ManagementScope, ManagementObjectSearcher, ManagementObjectCollection ve tabiki ManagementObject sınıflarına sık sık başvurmuşsunuzdur; ama bu sınıflarla çalışmak her zaman kolay değildir, özellikle de fonksiyonlarını kullanıyorsanız. Aşağıdaki koda göz atın :

private void List(string alanAdi) {
  string sorgu = String.Format("SELECT * FROM MicrosoftDNS_AType WHERE ContainerName = '{0}'", alanAdi);
  ManagementScope managementScope = new ManagementScope(new ManagementPath(@"\\.\root\MicrosoftDNS"));
  managementScope.Connect();

  ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher(managementScope, new ObjectQuery(sQuery));
  ManagementObjectCollection objectCollection = objectSearcher.Get();

  foreach (ManagementObject managementObject in objectCollection) {
   //gelen nesne ile ilgili iş mantığı
  }
}

       Şimdi size iyi bir haberim var; .Net framework araçları arasında bulunan "Management Strongly Typed Class Generator" (Mgmtclassgen.exe) işlerinizi oldukça kolaylaştıracaktır. "<Program Files>\Microsoft Visual Studio 8\SDK\v2.0\Bin\" dizini altında bulabileceğiniz "mgmtclassgen.exe" uygulaması, parametrelerinde vereceğiniz WMI sınıfı üzerinde rahatlıkla işlem yapabileceğiniz managed kodları üretecektir.

    Bu uygulamayı en basit aşağıdaki şekilde çalıştırabilirsiniz :

mgmtclassgen.exe Win32_Service

    Bu komut size Win32_Service WMI sınıfı üzerinde çalışabilmek için ara bir managed sınıf üretecektir. İşte size daha detaylı bir başka örnek

mgmtclassgen Win32_Service /n root\cimv2 /l CS /p c:\servisler.cs

    Bu örnekte Root\cimv2 isim uzayı altında bulunan Win32_Service sınıfı üzerinde işlem yapabileceğiniz sınıfı oluşturu ve çıktıyı "c:\servisler.cs" dosyasına yazar. Oluşturduğu sınıfın bulunacağı isim uzayı ise ROOT.CIMV2.Win32 olacaktır. Kullanabileceğiniz diğer parametreler ise :

/L Oluşturulacak olan kodun hangi dotnet dilinde olacağı. CS, VB, JS, VJ, MC seçeneklerinizden varsayılan olan CSharp (CS)’tir.
/M Bağlanılacak olan makine adı, varsayılan değeriyerel makinedir.
/U Kullanıcı Adı
/PW Kullanıcı Şifresi

   mgmtclassgen uygulamasını yukarıda verdiğim örnek içerisindeki AType WMI sınıfı için kullanılacak olursak; aynı işi , oluşturulan managed kodu ile, aşağıdaki kadar basit şekilde yapabilirsiniz :

private void List(string alanAdi) {
  foreach (AType atype in AType.GetInstances(String.Format("SELECT * FROM MicrosoftDNS_AType WHERE ContainerName = '{0}'", alanAdi))) {
    //İş mantığı kodu buraya yazılacak
  }
}

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir