WMI取得ハードウェア情報パッケージ関数方法(デスクトップマシン出荷番号CPU ID BIOSシーケンス番号ハードディスク情報グラフィックカード情報MACアドレスを連想する)


今日はWMIをしました。コンピュータのハードウェア情報を調べてみました。コードの多くは抽出できると思います。それらの公共部分を自分で出します。今後は一部のハードウェア情報を得るには一つの関数を書かなくてもいいです。例えば、MACアドレスを取得するにはMACアドレスを取得する関数を書きます。CPU情報を取得するにはCPU情報を取得する関数を書きます。面倒くさいです
関数コードは以下の通りです。

private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
        {
            string result = "";
            System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection moc = mc.GetInstances();
            foreach (System.Management.ManagementObject mo in moc)
            {
                if (mo[wmiMustBeTrue].ToString() == "True")
                {
                    if (result == "")
                    {
                        try
                        {
                            result = mo[wmiProperty].ToString();
                            break;
                        }
                        catch
                        {
                        }
                    }

                }
            }
            return result;
        }


        private static string identifier(string wmiClass, string wmiProperty)
        {
            string result = "";
            System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection moc = mc.GetInstances();
            foreach (System.Management.ManagementObject mo in moc)
            {
                if (result == "")
                {
                    try
                    {
                        result = mo[wmiProperty].ToString();
                        break;
                    }
                    catch
                    {
                    }
                }

            }
            return result;
        }

CPU IDを取得する

private static string cpuId()
        {    
            string retVal = identifier("Win32_Processor", "UniqueId");  //CPUID  
            retVal += identifier("Win32_Processor", "ProcessorId");
            retVal += identifier("Win32_Processor", "Name");  //
            retVal += identifier("Win32_Processor", "Manufacturer");  //
            retVal +=identifier("Win32_Processor", "MaxClockSpeed");  //
            return retVal;
        }
BIOSの情報を取得します。BIOSのシリアル番号はデスクトップの出荷番号を連想します。連想する保証画面の自動取得ホスト番号もこの「Win 32_」を呼び出すべきです。BIOS「の」SerialNumber
新聞修理ページのURL:http://support1.lenovo.com.cn/lenovo/wsi/wsbx/lenovo/#minarepairInfo

//BIOS
        private static string biosId()
        {
            return identifier("Win32_BIOS", "Manufacturer")          //BIOS
                    + identifier("Win32_BIOS", "SMBIOSBIOSVersion")  //
                    + identifier("Win32_BIOS", "IdentificationCode") //
                    + identifier("Win32_BIOS", "SerialNumber")       //BIOS
                    + identifier("Win32_BIOS", "ReleaseDate")        //
                    + identifier("Win32_BIOS", "Version");           //
        }
ハードディスク情報を取得:

private static string diskId()
        {
            return identifier("Win32_DiskDrive", "Model")           //
                    + identifier("Win32_DiskDrive", "Manufacturer") //
                    + identifier("Win32_DiskDrive", "Signature")    //
                    + identifier("Win32_DiskDrive", "TotalHeads");  //
        }
グラフィックカードの情報を取得:

private static string videoId()
         {
            return identifier("Win32_VideoController", "DriverVersion")
                     + identifier("Win32_VideoController", "Name");
        }
インターネットカードのMACアドレス情報を取得します。

private static string macId()
         {
             return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled");
        }