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
}
} Related posts:



August 17, 2006 









Android işletim sistemli cep telefonunuz var, peki Enterprisecoding Android uygulamasını denediniz mi? Enterprisecoding web sitesini her yerden takip edebileceğiniz, offline
No comments yet... Be the first to leave a reply!