AdminGuide
BETA

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()

             {

                    try

                    {

                          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;

                    }

                    catch (Exception)

                    {

                          throw;

                    }

             }

 

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'"); // 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

 



Bunlar da ilginizi çekebilir...

 



81 defa okunmuş. - 8.8.2019
Etiketler : Win32_Classes,Computer System Hardware Classes,MacID bulma,CPU Serial,hdd serial,OS Version
Serdar Kardan

Serdar Kardan

(25.8.1975) - Web Tasarım, Programlama

 
RSS

e-Posta Aboneliği

Delivered by FeedBurner

 

En çok Okunanlar
- Windows 7 Geçici Profil Açma Sorunu ( 14385 )
- Gizli Sürücü ve Donanımları Kaldırmak ( 10055 )
- c# ile windows tabanlı program geliştirme ( 9810 )
- Unutulan SQL SA Şifresini Değiştirme ( 8217 )
- Domain Ortamında Saat Senkronizasyonu Problemi ( 7589 )