Donanıma özel IP, MacID, İşlemci seri numarası gibi bilgileri kullanarak projelerinize yetkilendirmeler, lisans kontrolleri ekleyebilirsiniz.
Bilgisayarın donanım bilgilerini almanız gereken durumlarda kullanabileceğiniz kodları örnekleyeceğiz. Bu makalede işleyeceğimiz başlıklar şunlar olacak;
- Network Kartı (IP, MacID)
- CPU
- HDD
- Ram
- Ekran kartı
Devamında ihtiyaç duyacağınız daha fazla detay için de gerekli kaynakları makalenin sonunda bulabilirsiniz.
Ayrıca projenin kaynak dosyalarını da yine makalenin sonunda bulabilir ve kod içerisindeki notları da inceleyerek kendi projelerinizde kullanabilirsiniz.
Önce aşağıdaki gibi bir form tasarımı yapalım;
Proje içerisinde de ayrı bir class oluşturup burada metodlarımızı oluşturacağız.
Öncelikle aşağıdaki namespace’ leri ekleyelim
using System; using System.Management; using System.Net; using System.Net.NetworkInformation;
Mac ID Info
public static string macIdInfo() { String macAdress = string.Empty; string mac = null; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { OperationalStatus ot = nic.OperationalStatus; if (nic.OperationalStatus == OperationalStatus.Up) { macAdress = nic.GetPhysicalAddress().ToString(); break; } } for (int i = 0; i <= macAdress.Length - 1; i++) { mac = mac + ":" + macAdress.Substring(i, 2); // mac adresini alırken parçalı aldığı için aralara : işareti ekliyoruz i++; } // string' in en başına fazladan eklenen 0. indexteki karakter olan : işaretini siliyoruz. mac = mac.Remove(0, 1); return mac; }
IP Info
public static string ipInfo() { string host = Dns.GetHostName(); IPHostEntry ip = Dns.GetHostByName(host); //Dns.GetHostByName(host); return ip.AddressList[0].ToString(); //birden fazla ip olabileceği için ilk bulunan değeri alıyoruz. }
CPU Seri Numarası
public static string getCPUInfo() { string processorInfo = null; string processorSerial = null; ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * FROM WIN32_Processor"); ManagementObjectCollection mObject = searcher.Get(); foreach (ManagementObject obj in mObject) { processorSerial = obj["ProcessorId"].ToString(); } processorInfo = processorSerial; return processorInfo; }
HDD Seri Numarası
public static string getHddSerial() { String hddSerial = null; ManagementObjectSearcher hddSearcher = new ManagementObjectSearcher("Select * FROM WIN32_DiskDrive"); ManagementObjectCollection mObject = hddSearcher.Get(); foreach (ManagementObject obj in mObject) { hddSerial = (string)obj["SerialNumber"]; } return hddSerial; }
RAM miktarını öğrenme
public static string getRamSize() { string ramSizeInfo = null; ManagementObjectSearcher ramSearcher = new ManagementObjectSearcher("Select * From Win32_ComputerSystem"); foreach (ManagementObject mObject in ramSearcher.Get()) { double Ram_Bytes = (Convert.ToDouble(mObject["TotalPhysicalMemory"])); double ramgb = Ram_Bytes / 1073741824; double ramSize = Math.Ceiling(ramgb); ramSizeInfo = ramSize.ToString() + " GB"; } return ramSizeInfo; }
Ekran Kartı Bilgilerini Alma
Benim sistemimde 2 ekran kartı olduğu için aktif kullandığımın bilgisini almak için Where koşulu ile sorgulama eklemem gerekiyordu. Pasif durumdaki kartı sorguladığınızda çalışır durumda olmadığı için çözünürlük bilgisi alamayacağınız için hata alırsınız. Ya da try-catch ile kontrollü olarak devam edebilirsiniz…
public static string getVideoControllerInfo() { string videoControllerInfo = null; string name = null; string ram = null; string horizontalResolution = null; string verticalResolution = null; string deviceID = null; ManagementObjectSearcher vidSearcher = new ManagementObjectSearcher("Select * from Win32_VideoController Where availability='3'"); foreach (ManagementObject mObject in vidSearcher.Get()) { name = mObject["name"].ToString(); ram = (Convert.ToDouble(mObject["AdapterRam"]) / 1073741824).ToString(); deviceID = (string)mObject["DeviceID"]; horizontalResolution = mObject["CurrentHorizontalResolution"].ToString(); verticalResolution = mObject["CurrentVerticalResolution"].ToString(); } videoControllerInfo = name + "\r\n Ram Miktarı : " + ram + " GB \r\n ID : " + deviceID + "\r\n Çözünürlük :" + horizontalResolution + " x " + verticalResolution; return videoControllerInfo; }
İşletim Sistemi Bilgilerini Almak
public static string getOSinfo() { string osSerial = null; string osVersionInfo = null; string OSinfo = null; ManagementObjectSearcher osInfo = new ManagementObjectSearcher("Select * From Win32_OperatingSystem"); foreach (ManagementObject osInfoObj in osInfo.Get()) { osSerial = (string)osInfoObj["Caption"]; osVersionInfo = (string)osInfoObj["Version"]; OSinfo = osSerial + " - " + osVersionInfo; } return OSinfo; }
Kaynak : Computer System Hardware Classes – Microsoft
Proje Dosyaları : Hardware Info Project Files