|
HDD |
HDD: Hard Disk Drive
WMI: Windows Management Instrumentation
HardDisk üreticisi tarafından, HardDisk'e atanmış olan seri numarasını elde etmek için WMI kullanabiliriz. Bir Windows Bileşeni olan WMI, sadece HDD değil, tüm donanım ile ilgili bilgiler elde etmemizi sağlayan bir yapıdır, içerisinde
Win32,
Registry,
System gibi class'lar ve
IIS,
Active Directory,
DNS gibi provider'lar barındırır.
WMI Class'ları ve
WMI Provider'ları ile ilgili detaylı bilgiyi
WMI Reference üzerinde bulabilirsiniz.
.NET Framework içerisindeki
System.Management namespace'i altındaki üyeler kullanılarak WMI işlemleri gerçekleştirilebilir. HardDisk bilgilerini sorgulamak için
Win32_DiskDrive ve
Win32_PhysicalMedia sınıfları kullanılır.
System.Management namespace'i ile ilgili ayrıntılara
bu adres üzerinden ulaşabilirsiniz.
msdn Magazine içerisinde yayınlanmış olan
WMI and .NET başlıklı makaleyi de
bu link üzerinden okuyabilirsiniz.
Bu kadar giriş bilgisinden sonra gelelim HardDisk'imizin seri numarasına nasıl ulaşacağımıza. Bunu yapmak için öncelikle proje referanslarımıza
System.Management eklenmeli, ardından da kodumuza
using System.Management; ifadesi ile gerekli olan namespace'i eklemeliyiz. WMI içerisindeki
Win32_PhysicalMedia sınıfı istediğimiz seri numarasına ulaşmamızı sağlayacak. İstersek HardDisk model ve tip bilgilerine ulaşmak için de
Win32_DiskDrive sınıfını kullanabiliriz.
Öncelikle bilgisayarımızdaki fiziksel disklerin seri numaralarını kolleksiyon olarak elde etmemizi sağlayacak bir method yazalım.
public static List<string>
GetSerialsFromHardDrives()
{
List<string>
serials = new List<string>
();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
ManagementObjectCollection disks = searcher.Get();
foreach(ManagementObject disk in disks)
{
if (disk["SerialNumber"] == null)
serials.Add("");
else
serials.Add(disk["SerialNumber"].ToString());
}
return serials;
}
Yukarıdaki kod bloğunda öncelikle tespit edilecek olan seri numaralarını depolamak üzere generic bir string kolleksiyonu hazırlanıyor. Ardından basit bir select ifadesi kullanılarak ManagementObjectSearcher nesnesi örnekleniyor. Sonrasında, bu nesnenin Get isimli methodu kullanılarak fiziksel disklerin nesne örnekleri bir kolleksiyon olarak alınıyor. Son adımda ise yaptığımıız şey eldeki kolleksiyonda dönerek her bir diskin seri numarasını elimizdeki string kolleksiyonuna eklemek. En son olarak da elimizde bulunan seri numaralarını barındıran string kolleksiyonunu methoddan geri döndürüyoruz.
Aşağıdaki method içerisindeki kod bloğu ise farklı bir WMI sınıfına select atıyor ve bilgisayarımızdaki HardDisklerin tip ve model bilgilerini Console ekranına yazdırıyor.
public static void DisplayHDDInfo()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach(ManagementObject disk in searcher.Get())
{
Console.WriteLine("Model: {0} , InterfaceType: {1}", disk["Model"], disk["InterfaceType"]);
}
}
Bilgisayarımızdaki harddisklere ait seri numarası, model ve tip gibi bilgileri nasıl elde edebileceğimizi basit birer method ile ele aldık. Artık, elde edilen bilgiler ile istediğiniz işlemi gerçekleştirebilirsiniz. Hepinize kolay gelsin.