HardDisk Seri Numarasını ve Bilgilerini Alma

Merhaba Arkadaşlar, bu makalede uygulamanın çalıştığı bilgisayarın hard diskinin seri numarasını ve diğer bilgilerini almayı anlatıyor olacağım. Bilgisayardaki her donanımın kendine özgü bir seri numarası ve bilgisi vardır. Özellikle teknik servise işimiz düştü ise bu konuya zaten hakimizdir diye düşünüyorum. 🙂 Zira seri numarasını vermeden veya kendileri görmeden garanti sorgulaması yapmazlar ve cihazınızı işleme almazlar.

HardDisk Seri Numarası Ne İçin Kullanılır?

Özellikle bir lisans programı yapıyorsanız son derece işe yarar bilgilerden birisidir lisans numarası almak. Zira kullanıcının mevcut sabit diskinin seri numarasını programınıza aldırarak, ilk açılış esnasında lisans sorgulaması yapabilirsiniz. Hatta eğer vaktim olursa daha sonra bir makalede yine bu konu hakkında bahsetmek ve basit de olsa bir lisans servisi ve uygulaması yazmak da güzel olur ne dersiniz?

HardDisk Seri Numarası Nasıl Alınır?

Bu işlem için “System.Management” sınıfından faydalanacağız. Eğer visual studio içerisinde bulamazsanız referanslar alanına sağ tıkladıktan sonra “Manage NuGet Packages” e tıkladıktan sonra NuGet üzerinden de bu sınıfı yükleyebilirsiniz.

Tabi bu işlemi yapmadan önce de aşağıdaki gibi bir sınıf oluşturacağız ve bu sınıfı bir listeye atacağız ki birden fazla sabit disk olan bilgisayarlarda bütün diskleri okuyabilmiş olalım.

public class HardDrive
{
    public string model { get; set; }
    public string serialNumber { get; set; }
    public string deviceID { get; set; }
    public string type { get; set; }
}

Şimdi sıra geldi kodumuza başlamaya. Kodumuzun ilk satırında yukarıda oluşturduğumuz sınıfı içeren bir “List” tipinde bir değişken tanımlayacağız.

List<HardDrive> hdCollection = new List<HardDrive>();

Bu işlemden sonra artık kodumuzu tamamlayabiliriz.

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");

List<HardDrive> hdCollection = new List<HardDrive>();

foreach (ManagementObject wmi_HD in searcher.Get())
{
    HardDrive hd = new HardDrive();
    hd.serialNumber = wmi_HD["SerialNumber"].ToString();
    hd.model = wmi_HD["Model"].ToString();
    hd.type = wmi_HD["InterfaceType"].ToString();
    hd.deviceID = wmi_HD["DeviceID"].ToString();
    hdCollection.Add(hd);
}

İşte kodumuz bu kadar. Aslında gayet açık olduğunu düşünüyorum ancak şunu da gelirteyim; ManagementObjectSearcher sınıfı sorgu çalıştırdıktan sonra bize içerisinde çok fazla property (özellik) olan bir yanıt döner. Biz, örneğin “wmi_HD[“SerialNumber”].ToString()” diyerek buradaki nesnenin “SerialNumber” özelliğini almak istediğimizi belirtmiş oluyoruz ve kodun sonucunda gelen değer de “Object” tipinde olduğu için “.ToString()” diyerek string değere çevirip dilediğimiz bir string değişkene atıyoruz.

Tabi yukarıda da bahsettiğim gibi bu konuda çok fazla özellik dönmekte. Bunların bir tam listesini de aşağıda sizlerle paylaşıyorum. Belki farklı bir özelliği almak isteyen olursa diye.

ManagementObjectSearcher Sınıfına Ait Tüm Özelliklerin Tam Listesi

  • Availability
  • BytesPerSector
  • Capabilities
  • CapabilityDescriptions
  • Caption
  • CompressionMethod
  • ConfigManagerErrorCode
  • ConfigManagerUserConfig
  • CreationClassName
  • DefaultBlockSize
  • Description
  • DeviceID
  • ErrorCleared
  • ErrorDescription
  • ErrorMethodology
  • FirmwareRevision
  • Index
  • InstallDate
  • InterfaceType
  • LastErrorCode
  • Manufacturer
  • MaxBlockSize
  • MaxMediaSize
  • MediaLoaded
  • MediaType
  • MinBlockSize
  • Model
  • Name
  • NeedsCleaning
  • NumberOfMediaSupported
  • Partitions
  • PNPDeviceID
  • PowerManagementCapabilities
  • PowerManagementSupported
  • SCSIBus
  • SCSILogicalUnit
  • SCSIPort
  • SCSITargetId
  • SectorsPerTrack
  • SerialNumber
  • Signature
  • Size
  • Status
  • StatusInfo
  • SystemCreationClassName
  • SystemName
  • TotalCylinders
  • TotalHeads
  • TotalSectors
  • TotalTracks
  • TracksPerCylinder
0 0 vote
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments