C#中的ManagementClass類


 

C# 提供了ManagementClass類來獲取本機的一些基本信息,比如CPU的個數,CPU的頻率,網卡的MAC,內存的大小,硬盤的大小等。

獲取本機MAC地址:

       /// <summary>
       /// 獲取本機的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;
       }

獲取本機CPU的個數:

/// <summary>
       /// 獲取CPU的個數
       /// </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;
       }

獲取本機CPU的頻率

/// <summary>
       /// 獲取CPU的頻率 這里之所以使用string類型的數組,主要是因為cpu的多核
       /// </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;
       }

獲取本機硬盤的大小

/// <summary>
       /// 獲取硬盤的大小
       /// </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";
       }
    

獲取本機內存的大小:

/// <summary>
       /// 獲取內存的大小
       /// </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編寫的,可運行。

ManageMentClass 對象被實例化時,根據初始化參數的不同能夠獲取不同的本地信息:"Win32_NetworkAdapterConfiguration" 獲取本機網絡適配器對象。據此可以獲取網絡地址等。"Win32_DiskDiver" 獲取本機硬盤的相關信息,"Win32_Processor" 獲取本機CPU相關的信息。"Win32_OperatingSystem" 獲取內存等相關信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM