Mendapatkan ID hardware pada windows


Beberapa waktu yang lalu, saya butuh informasi ID hardware (motherboard, BIOS, memory) untuk program python yang saya buat. Banyak cara untuk mendapatkannya, akan tetapi menurut saya salah satu yang paling mudah adalah dengan menggunakan library wmi. WMI merupakan library yang cukup powerfull yang menyediakan banyak fungsi untuk mengakses sistem operasi, perangkat keras, aplikasi, dsb. Daftar fungsi WMI yang disediakan dapat dilihat di sini. Pemrogramannya di python tidak terlalu susah. Berikut contoh skrip untuk mendapatkan data BIOS lewat WMI.

import wmi

c = wmi.WMI()

for s in c.Win32_BIOS() :
    print s

Jika dijalankan akan memunculkan hasil sebagai berikut :

instance of Win32_BIOS
{
        BiosCharacteristics = {7, 11, 12, 15, 16, 17, 19, 23, 24, 25, 26, 27, 28
, 29, 32, 33, 39, 40, 42, 43, 50, 57, 58, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73
, 74, 75, 76, 77, 78, 79};
        BIOSVersion = {"_ASUS_ - 1072009", "BIOS Date: 10/16/12 14:03:53 Ver: 04
.06.05", "BIOS Date: 10/16/12 14:03:53 Ver: 04.06.05"};
        Caption = "BIOS Date: 10/16/12 14:03:53 Ver: 04.06.05";
        CurrentLanguage = "en|US|iso8859-1";
        Description = "BIOS Date: 10/16/12 14:03:53 Ver: 04.06.05";
        InstallableLanguages = 1;
        ListOfLanguages = {"en|US|iso8859-1"};
        Manufacturer = "American Megatrends Inc.";
        Name = "BIOS Date: 10/16/12 14:03:53 Ver: 04.06.05";
        PrimaryBIOS = TRUE;
        ReleaseDate = "20121016000000.000000+000";
        SerialNumber = "CBN0CX064608458     ";
        SMBIOSBIOSVersion = "K46CM.311";
        SMBIOSMajorVersion = 2;
        SMBIOSMinorVersion = 7;
        SMBIOSPresent = TRUE;
        SoftwareElementID = "BIOS Date: 10/16/12 14:03:53 Ver: 04.06.05";
        SoftwareElementState = 3;
        Status = "OK";
        TargetOperatingSystem = 0;
        Version = "_ASUS_ - 1072009";
};

Jika ingin mendapatkan nilainya secara spesifik, kita dapat menggunakan skrip berikut :

print Win32_BIOS()[0].SerialNumber.strip()

Kode program di atas berfungsi untuk mengambil SerialNumber dari BIOS, karena banyak spasi kita menambahkan fungsi strip() untuk menghilangkan spasi. Kode di atas untuk mengambil data yang berupa karakter, jika data yang ingin diambil berupa bilangan, maka kita tidak perlu menambahkan fungsi strip().


Leave a Reply