C# - Donanım Bilgilerini Almak


8.08.2019 / Serdar Kardan


C# - Donanım Bilgilerini Almak

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;

C# ile Donanım Bilgilerini Almak

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

 



8.08.2019 - 7924


Etiketler : Win32_Classes,Computer System Hardware Classes,MacID bulma,CPU Serial,hdd serial,OS Version
Leave a Comment:

Bunlar da ilginizi çekebilir
G Data Business Client Paket kurulumu
G Data Business Management Server üzerinden Client tarafına kurulumunu öğreniyoruz.
Backup Exec remote agent for windows service stop hatası nasıl düzeltilir?
Backup Exec Servislerinden birkaçı başlamıyor ise yapmamız gereken çok basit.
C# - TelNet Client
Projenizde TCPIP üzerinde bir porttan data okumak gerekebilir. Bunu Telnet ile yapabilirsiniz.
 

En çok Okunanlar



Bumerang - Yazarkafe