新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:通过WMI获取系统信息一个类,希望对大家有点帮助

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

新客网 XKER.COM 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();
        }
    }
}
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐