8.08.2019 / Serdar Kardan
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;
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;
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;
}
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.
}
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;
}
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;
}
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;
}
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;
}
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
8.08.2019 - 7924