Bu yazımızda c# ile bilgisayarımızın donanım birimleri ve işletim sistemiyle ilgili özellikleri nasıl elde edeceğimizi anlatmaya çalışacağız.
Örnek olarak işlemci seri numarası, anakart modeli, harddisk üreticisi, bios versionu, işletim sistemi serisi ve versiyonu gibi sistem özelliklerini elde edeceğiz. Bu özellikleri bilmek bize ne kazandırır yada bunları nerelerde kullanabiliriz ondan bahsedelim. Yapmış olduğumuz yazılımı full sürüm yapmak için bu donanım özelliklerine göre bir seri numarası üretebiliriz ve yazılımın başka bilgisayarlarda kullanılmasına engel olabiliriz. Yada yapmış olduğumuz yazılımın donanım veya işletim sistemi ile uyumluluk sınamasını gerçekleştirebiliriz.
Bu kadar açıklamadan sonra uygulamayı nasıl yapacağımıza geçelim.
Öncelikle projemizi açarak referans olarak System.Management
’ i ekleyelim. Aşağıda nasıl ekleyeceğimize ait ekran görüntüsü var.
Referansı ekledik şimdi eklemiş olduğumuz referansı projemize çağıralım.
using System.Management;
Sistem bilgisini bir form yardımıyla öğreneceğiz. Bu yüzden bir form ekliyor ve aşağıdaki ekran görüntüsüne uygun olarak nesneleri yerleştiriyoruz. Kısaca uygulamamızın çalışmasından bahsedelim. Combobox1 den donanım birimlerinden birini seçiyoruz. Combobox2 den bu donanım birimiyle ilgili hangi bilgiyi öğrenmek istiyorsak onu seçiyoruz. Gerisini fonksiyonumuz hallediyor ve bize istediğimiz bilgiyi döndürüyor.
Kodlama işlemine geçelim.Kodların açıklamaları kod aralarındaki açıklama satırlarında yer alıyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public Form1() { InitializeComponent(); string [] tablo={"Processor", "BaseBoard", "DiskDrive", "VideoController", "PhysicalMedia", "BIOS", "OperatingSystem"}; comboBox1.Items.AddRange(tablo); //Hangi donanım birimini seçeceğimizi belirlemek için combobox1 i dolduruyoruz. string[] ozellik = { "ProcessorId", "Product", "Manufacturer", "Signature", "Caption", "SerialNumber", "Version" }; comboBox2.Items.AddRange(ozellik); //Hangi donanım özelliğini seçeceğimizi belirlemek için combobox2 i dolduruyoruz. //Unutmayalım ki bazı donanım özellikleri sadece belli donanımda görüntülenir.Örneğin //Processor(işlemci)-Processorid(işlemciid) ile çalışır. } private void button1_Click(object sender, EventArgs e) { label5.Text = Getir(comboBox1.Text,comboBox2.Text); //Combobox da seçilen veriler Getir Fonksiyonuna gönderiliyor. } private static string Getir(string TableName, string MethodName) { ManagementObjectSearcher MOS = new ManagementObjectSearcher("Select * from Win32_" + TableName); //ManagementObjectSearcher sınıfımız bize Win32 tablosundaki bilgileri bularak çekmemizi sağlıyor. foreach (ManagementObject MO in MOS.Get()) //foreach döngüsü ile çekilen yönetim öğeleri arasından sadece istediklerimizi seçiyoruz. { try { return MO[MethodName].ToString(); //Sadece istenen özellik bulunup geri döndürülüyor. } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } } return ""; } |
invalid class hatası veriyor
Levent Bey kodlarda herhangi bir yanlışlık bulamadım. Yazının sonuna çalışır haldeki proje dosyalarını ekledim. İncelerseniz sevinirim. Kolay gelsin.
Merhaba foreach döngüsünde ve return MO[MethodName].Tostring(); de hata çıkıyor kodlar filen aynı ama bitürlü çözemedim
Kardeş nasıl yaptın bi türlü anlayamadım çalıştır diyorum foreach hatası veriyor