通过WMI获取系统信息一个类,希望对大家有点帮助

来源:岁月联盟 编辑:zhu 时间:2003-07-12
using System;
using System.Management;

namespace PathFinder.OPSP.Management.Control
{
    /// <summary>
    /// 平台信息类
    /// </summary>
    public class PlatformInfo
    {
        private string m_strCPU;
        private string m_strOS;
        private string m_strRAM;
        private string m_strVM;
        private string m_strDisk;

        public PlatformInfo()
        {
            this.Refresh();
        }

        public string CPU
        {
            get
            {
                return m_strCPU;
            }
        }

        public string OS
        {
            get
            {
                return m_strOS;
            }
        }

        public string RAM
        {
            get
            {
                return m_strRAM;
            }
        }

        public string VirtualMemory
        {
            get
            {
                return m_strVM;
            }
        }

        public string Disk
        {
            get
            {
                return m_strDisk;
            }
        }

        public void Refresh()
        {
            GetCPU();
            GetOS_RAM_VM();
            GetDisk();            
        }

        private void GetCPU()
        {
            m_strCPU = string.Empty;
            ManagementClass objMC = new ManagementClass("Win32_Processor");
            ManagementObjectCollection objMOC = objMC.GetInstances();
            foreach(ManagementObject objMO in objMOC)
            {
                if (m_strCPU != string.Empty)
                {
                    m_strCPU += "/r/n";
                }
                m_strCPU += (string)objMO["Caption"];
                m_strCPU += "    ";
                uint iClockSpeed = (uint)objMO["CurrentClockSpeed"];
                m_strCPU += iClockSpeed.ToString();
                m_strCPU += "MHz";
                objMO.Dispose();
            }
            objMOC.Dispose();
            objMC.Dispose();
        }

        private void GetOS_RAM_VM()
        {
            ManagementClass objMC = new ManagementClass("Win32_OperatingSystem");
            ManagementObjectCollection objMOC = objMC.GetInstances();
            foreach(ManagementObject objMO in objMOC)
            {
                m_strOS = (string)objMO["Caption"];
                ulong iRam = ((ulong)objMO["TotalVisibleMemorySize"])>>10;
                m_strRAM = iRam.ToString() + " MB";
                ulong iVM = ((ulong)objMO["TotalVirtualMemorySize"])>>10;
                m_strVM = iVM.ToString() + " MB";
                objMO.Dispose();
            }
            objMOC.Dispose();
            objMC.Dispose();
        }

        private void GetDisk()
        {
            m_strDisk = string.Empty;
            ManagementClass objMC = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection objMOC = objMC.GetInstances();
            foreach(ManagementObject objMO in objMOC)
            {
                if (m_strDisk != string.Empty)
                {
                    m_strDisk += "/r/n";
                }
                m_strDisk += "Disk";
                uint index = (uint)objMO["Index"];
                m_strDisk += index.ToString();
                m_strDisk += "    ";
                ulong iSize = (ulong)objMO["Size"];
                int iTemp = (int)(iSize>>30);
                if (iTemp>0)
                {
                    m_strDisk += iTemp.ToString();
                    m_strDisk += " GB";
                }
                else
                {
                    iTemp = (int)(iSize >>20);
                    m_strDisk += iTemp.ToString();
                    m_strDisk += " GB";                    
                }                
                objMO.Dispose();
            }
            objMOC.Dispose();
            objMC.Dispose();
        }
    }
}