wmi 引用Management获取CPU、内存、硬盘等系统及硬件信息

前几天闲着没事,想做一个显示电脑硬件信息的小窗体看看,网上看到了不少方法,最多的是利用wmi获取硬件信息

WMI,是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,如图所示,工具软件和WMI可以方便地读写WMI。----引自百度百科

看了不少前辈写的一些方法后,自己凑了一下,写了这个类,使用起来还比较方便

using System;
using System.Collections.Generic;
using System.Management;

namespace HardwareInfo_test.HardClass
{
    public  class PCInfo
    {
        private static string getInfo(string parameter, string command)
        {
            String MyInfo = "";
            ManagementObjectSearcher MySearcher =
                new ManagementObjectSearcher("SELECT * FROM " + command);
            if(MySearcher.Get().Count>0)
            {
                foreach (ManagementObject MyObject in MySearcher.Get())
                {
                    MyInfo += MyObject[parameter] + "|";
                }
               MyInfo = MyInfo.Remove(MyInfo.LastIndexOf("|"));
            }                       
            return MyInfo;
        }

          /// <summary>
        /// 物理内存总大小(byte)
        /// </summary>
        /// <returns></returns>
        public static string GetTotalPhysicalMemory()
        {
            string parameter = "TotalPhysicalMemory";
            string command = "Win32_LogicalMemoryConfiguration";
            return getInfo(parameter, command);
        }
            //  LogicalMemoryConfiguration
            //{
            //  uint32 AvailableVirtualMemory; //可用虚拟内存
            //  string Caption;              
            //  string Description;
            //  string Name;
            //  string SettingID;
            //  uint32 TotalPageFileSpace;    //页面文件总数
            //  uint32 TotalPhysicalMemory;   //物理内存总数
            //  uint32 TotalVirtualMemory;    //虚拟内存总数
            //};

        /// <summary>
        /// 可用物理内存(byte)
        /// </summary>
        /// <returns></returns>
        public static string GetFreePhysicalMemory()
        {
            string parameter = "FreePhysicalMemory";
            string command = "Win32_OperatingSystem";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU使用百分比(%)
        /// </summary>
        /// <returns></returns>
        public static string  GetCpuUsedPercents()
        {
            string parameter = "LoadPercentage";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU名称
        /// </summary>
        /// <returns></returns>
        public static string GetCpuName()
        {
            string parameter = "Name";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU出厂商
        /// </summary>
        /// <returns></returns>
        public static string GetCpuManufacturer()
        {
            string parameter = "Manufacturer";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU最大时钟频率(既主频,单位为MB)
        /// </summary>
        /// <returns></returns>
        public static string GetCpuMaxClockSpeed()
        {
            string parameter = "MaxClockSpeed";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU地址宽度(32、64)
        /// </summary>
        /// <returns></returns>
        public static string GetCpuAddressWidth()
        {
            string parameter = "AddressWidth";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU数据宽度
        /// </summary>
        /// <returns></returns>
        public static string GetCpuDataWidth()
        {
            string parameter = "DataWidth";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU外部频率
        /// </summary>
        /// <returns></returns>
        public static string GetCpuExtClock()
        {
            string parameter = "ExtClock";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU当前电压(单位为0.1V)
        /// </summary>
        /// <returns></returns>
        public static string GetCpuCurrentVoltage()
        {
            string parameter = "CurrentVoltage";
            string command = "Win32_Processor";
            return getInfo(parameter, command);
        }

        /// <summary>
        /// CPU二级缓存
        /// </summary>
        /// <returns></returns>
        public static string GetCpuL2CacheSize()
        {
            string parameter = "L2CacheSize";
            string command = "Win32_Processor";
            return getInfo(parameter, command); 
        }

        /// <summary>
        /// 硬盘容量信息
        /// </summary>
        /// <returns></returns>
        public static string GetDiskSize()
        {
            string parameter = "Size";
            //parameter = "";
            string command = "Win32_DiskDriver";
            return getInfo(parameter, command);
        }


        /**/
        /// <summary>
        /// 查询硬盘编号
        /// </summary>
        /// <returns></returns>
        public string GetMainHardDiskId()
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
            String hardDiskID = "";
            foreach (ManagementObject mo in searcher.Get())
            {

                hardDiskID = mo["SerialNumber"].ToString().Trim();
                break;
            }
            return hardDiskID;
        }
 
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值