五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > C#中的ManagementClass類(lèi)和獲取硬件的信息的用法

C#中的ManagementClass類(lèi)和獲取硬件的信息的用法

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):9757    更新時(shí)間:2018-06-07 10:41   參與評(píng)論

  在.NET的項(xiàng)目中,有時(shí)候需要獲取計(jì)算機(jī)的硬件的相關(guān)信息,在C#語(yǔ)言中需要利用ManagementClass這個(gè)類(lèi)來(lái)進(jìn)行相關(guān)操作。

   現(xiàn)在先來(lái)介紹一下ManagementClass類(lèi),首先看一下類(lèi)的繼承結(jié)構(gòu):

 

    現(xiàn)在看一下MSDN對(duì)ManagementClass類(lèi)的解釋?zhuān)瑢?duì)表示一個(gè)通用信息模型 (CIM) 管理類(lèi)。 管理類(lèi)是 WMI 類(lèi),如 Win32_LogicalDisk, ,該類(lèi)型可表示一個(gè)磁盤(pán)驅(qū)動(dòng)器,并 Win32_Process, ,它表示的進(jìn)程 Notepad.exe 等。 此類(lèi)的成員可以訪問(wèn) WMI 數(shù)據(jù),使用一個(gè)特定的 WMI 類(lèi)路徑。

  一. 接下來(lái)我們來(lái)看一下ManagementClass類(lèi)中一些較為常用的方法的源碼:

  1.GetInstances():此方法存在四個(gè)重載


2.Get():

 


3.GetSubclasses():此方法存在四個(gè)重載版本


C# 提供了ManagementClass類(lèi)來(lái)獲取本機(jī)的一些基本信息,比如CPU的個(gè)數(shù),CPU的頻率,網(wǎng)卡的MAC,內(nèi)存的大小,硬盤(pán)的大小等。


獲取本機(jī)MAC地址:

       /// <summary>
       /// 獲取本機(jī)的MAC地址
       /// </summary>
       /// <returns></returns>
       public static string GetMACString()
       {
           ManagementClass mAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration");
           ManagementObjectCollection mo = mAdapter.GetInstances();
           foreach (ManagementBaseObject m in mo)
           {
               if ((bool)m["IpEnabled"] == true)
               {
                   return m["MacAddress"].ToString();
               }
           }
           mo.Dispose();
           return null;
       }


獲取本機(jī)CPU的個(gè)數(shù):

/// <summary>
       /// 獲取CPU的個(gè)數(shù)
       /// </summary>
       /// <returns></returns>
       public static int GetCpuCount()
       {
           try
           {
               using (ManagementClass mCpu = new ManagementClass("Win32_Processor"))
               {
                   ManagementObjectCollection cpus = mCpu.GetInstances();
                   return cpus.Count;
               }
           }
           catch
           {
           }
           return -1;
       }


獲取本機(jī)CPU的頻率

/// <summary>
       /// 獲取CPU的頻率 這里之所以使用string類(lèi)型的數(shù)組,主要是因?yàn)閏pu的多核
       /// </summary>
       /// <returns></returns>
       public static string[] GetCpuMHZ()
       {
           ManagementClass mc = new ManagementClass("Win32_Processor");
           ManagementObjectCollection cpus = mc.GetInstances();
           string[] mHz = new string[cpus.Count];
           int c = 0;
           ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
           foreach (ManagementObject mo in mySearch.Get())
           {
               mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();
               c++;
           }
           mc.Dispose();
           mySearch.Dispose();
           return mHz;
       }


獲取本機(jī)硬盤(pán)的大小

/// <summary>
       /// 獲取硬盤(pán)的大小
       /// </summary>
       /// <returns></returns>
       public static string GetSizeOfDisk()
       {
           ManagementClass mc = new ManagementClass("Win32_DiskDrive");
           ManagementObjectCollection moj = mc.GetInstances();
           foreach (ManagementObject m in moj)
           {
               return m.Properties["Size"].Value.ToString();
           }
           return "-1";
       }

    


獲取本機(jī)內(nèi)存的大?。?/p>

/// <summary>
       /// 獲取內(nèi)存的大小
       /// </summary>
       /// <returns></returns>
       public static string GetSizeOfMemery()
       {
           ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
           ManagementObjectCollection moc = mc.GetInstances();
           double sizeAll = 0.0;
           foreach (ManagementObject m in moc)
           {
               if (m.Properties["TotalVisibleMemorySize"].Value != null)
               {
                   sizeAll += Convert.ToDouble(m.Properties["TotalVisibleMemorySize"].Value.ToString());
               }
           }
           mc = null;
           moc.Dispose();
           return sizeAll.ToString();
       }


本程序是使用VS2005編寫(xiě)的,可運(yùn)行。

ManageMentClass 對(duì)象被實(shí)例化時(shí),根據(jù)初始化參數(shù)的不同能夠獲取不同的本地信息:"Win32_NetworkAdapterConfiguration" 獲取本機(jī)網(wǎng)絡(luò)適配器對(duì)象。據(jù)此可以獲取網(wǎng)絡(luò)地址等。"Win32_DiskDiver" 獲取本機(jī)硬盤(pán)的相關(guān)信息,"Win32_Processor" 獲取本機(jī)CPU相關(guān)的信息。"Win32_OperatingSystem" 獲取內(nèi)存等相關(guān)信息。


ManagementClass類(lèi)的部分應(yīng)用:

  /// <summary>
        /// 獲得CPU編號(hào)
        /// </summary>
        /// <returns></returns>
        public string GetCpuid()
        {
            var cpuid = string.Empty;
            var mc = new ManagementClass("Win32_Processor");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                cpuid = mo.Properties["ProcessorId"].Value.ToString();
            }
            return cpuid;
        }
 
        /// <summary>
        /// 獲取硬盤(pán)序列號(hào)
        /// </summary>
        /// <returns></returns>
        public string GetDiskSerialNumber()
        {
            //這種模式在插入一個(gè)U盤(pán)后可能會(huì)有不同的結(jié)果,如插入我的手機(jī)時(shí)
            var hDid = string.Empty;
            var mc = new ManagementClass("Win32_DiskDrive");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                hDid = (string)mo.Properties["Model"].Value;
                //這名話解決有多個(gè)物理盤(pán)時(shí)產(chǎn)生的問(wèn)題,只取第一個(gè)物理硬盤(pán)
                break;
            }
            return hDid;
        }
 
        /// <summary>
        /// 獲取網(wǎng)卡硬件地址
        /// </summary>
        /// <returns></returns> 
        public string GetMacAddress()
        {
            var mac = "";
            var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                if (!(bool) mo["IPEnabled"]) continue;
                mac = mo["MacAddress"].ToString();
                break;
            }
            return mac;
        }
 
        /// <summary>
        /// 獲取IP地址
        /// </summary>
        /// <returns></returns>
        public string GetIpAddress()
        {
            var st = string.Empty;
            var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                if (!(bool) mo["IPEnabled"]) continue;
                var ar = (Array)(mo.Properties["IpAddress"].Value);
                st = ar.GetValue(0).ToString();
                break;
            }
            return st;
        }
 
        /// <summary>
        /// 操作系統(tǒng)的登錄用戶名
        /// </summary>
        /// <returns></returns> 
        public string GetUserName()
        {
            return Environment.UserName;
        }
 
 
        /// <summary>
        /// 獲取計(jì)算機(jī)名
        /// </summary>
        /// <returns></returns>
        public string GetComputerName()
        {
            return Environment.MachineName;
        }
 
        /// <summary>
        /// 操作系統(tǒng)類(lèi)型
        /// </summary>
        /// <returns></returns> 
        public string GetSystemType()
        {
            var st = string.Empty;
            var mc = new ManagementClass("Win32_ComputerSystem");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                st = mo["SystemType"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// 物理內(nèi)存
        /// </summary>
        /// <returns></returns>
        public string GetPhysicalMemory()
        {
            var st = string.Empty;
            var mc = new ManagementClass("Win32_ComputerSystem");
            var moc = mc.GetInstances();
            foreach (var o in moc)
            {
                var mo = (ManagementObject) o;
                st = mo["TotalPhysicalMemory"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// 顯卡PNPDeviceID
        /// </summary>
        /// <returns></returns>
        public string GetVideoPnpid()
        {
            var st = "";
            var mos = new ManagementObjectSearcher("Select * from Win32_VideoController");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["PNPDeviceID"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// 聲卡PNPDeviceID
        /// </summary>
        /// <returns></returns>
        public string GetSoundPnpid()
        {
            var st = string.Empty;
            var mos = new ManagementObjectSearcher("Select * from Win32_SoundDevice");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["PNPDeviceID"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// CPU版本信息
        /// </summary>
        /// <returns></returns>
        public string GetCpuVersion()
        {
            var st = string.Empty;
            var mos = new ManagementObjectSearcher("Select * from Win32_Processor");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["Version"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// CPU名稱(chēng)信息
        /// </summary>
        /// <returns></returns>
        public string GetCpuName()
        {
            var st = string.Empty;
            var driveId = new ManagementObjectSearcher("Select * from Win32_Processor");
            foreach (var o in driveId.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["Name"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// CPU制造廠商
        /// </summary>
        /// <returns></returns>
        public string GetCpuManufacturer()
        {
            var st = string.Empty;
            var mos = new ManagementObjectSearcher("Select * from Win32_Processor");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["Manufacturer"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// 主板制造廠商
        /// </summary>
        /// <returns></returns>
        public string GetBoardManufacturer()
        {
            var query = new SelectQuery("Select * from Win32_BaseBoard");
            var mos = new ManagementObjectSearcher(query);
            var data = mos.Get().GetEnumerator();
            data.MoveNext();
            var board = data.Current;
            return board.GetPropertyValue("Manufacturer").ToString();
        }
 
        /// <summary>
        /// 主板編號(hào)
        /// </summary>
        /// <returns></returns>
        public string GetBoardId()
        {
            var st = string.Empty;
            var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["SerialNumber"].ToString();
            }
            return st;
        }
 
        /// <summary>
        /// 主板型號(hào)
        /// </summary>
        /// <returns></returns>
        public string GetBoardType()
        {
            var st = string.Empty;
            var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
            foreach (var o in mos.Get())
            {
                var mo = (ManagementObject) o;
                st = mo["Product"].ToString();
            }
            return st;
        }


如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (9757人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱(chēng):
最新評(píng)論
2020年07月17日 11:27111

good
very good

------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)