.net 使用ManagementObjectSearcher 获取cpu、mac、硬盘sn

需要按照对应的nuget包: System.Management

获取cpu信息

ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();

string strCpuID = null;
foreach (ManagementObject mo in moc)
{
    strCpuID = mo.Properties["ProcessorId"].Value.ToString();
    break;
}

return strCpuID;

获取mac信息

ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
ManagementObjectCollection queryCollection = query.Get();
string mac = string.Empty;
foreach (ManagementObject mo in queryCollection)
{
    if (mo["IPEnabled"].ToString() == "True")
        mac = mo["MacAddress"].ToString();
}
return mac;

获取硬盘sn有两种方法

第一种 - 使用此方法获取到的待选数据较少所以速度稍快一些,但整体性能与第二种并无量级上的区别

string sn = string.Empty;
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject wmi_HD in searcher.Get())
{
    foreach (var item in wmi_HD.Properties)
    {
        if (wmi_HD.Properties["SerialNumber"] != null)
        {
            sn = wmi_HD.Properties["SerialNumber"].Value.ToString();
            break;
        }
    }
}
Console.WriteLine(sn);

第二种

string sn = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
    if (wmi_HD.Properties["SerialNumber"] != null)
    {
        sn = wmi_HD.Properties["SerialNumber"].Value.ToString();
        break;
    }
}
Console.WriteLine(sn);

可用的搜索项如下

Win32_Processor        //CPU中央处理器
Win32_PhysicalMemory        //物理内存条
Win32_Keyboard        //键盘
Win32_PointingDevice        //点输入设备,包括鼠标。
Win32_FloppyDrive        //软盘驱动器
Win32_DiskDrive        //硬盘驱动器
Win32_CDROMDrive        //光盘驱动器
Win32_BaseBoard        //主板
Win32_BIOS        //BIOS芯片
Win32_ParallelPort        //并口
Win32_SerialPort        //串口
Win32_SerialPortConfiguration        //串口配置
Win32_SoundDevice        //多媒体设备,一般指声卡
Win32_SystemSlot        //主板插槽 (ISA & PCI & AGP)
Win32_USBController        //USB控制器
Win32_NetworkAdapter        //网络适配器
Win32_NetworkAdapterConfiguration        //网络适配器设置
Win32_Printer        //打印机
Win32_PrinterConfiguration        //打印机设置
Win32_PrintJob        //打印机任务
Win32_TCPIPPrinterPort        //打印机端口
Win32_POTSModem        //MODEM
Win32_POTSModemToSerialPort        //MODEM端口
Win32_DesktopMonitor        //显示器
Win32_DisplayConfiguration        //显卡
Win32_DisplayControllerConfiguration        //显卡设置
Win32_VideoController        //显卡视频控制器
Win32_VideoSettings        //显卡支持的显示模式
Win32_TimeZone        //时区
Win32_SystemDriver        //驱动程序
Win32_DiskPartition        //磁盘分区
Win32_LogicalDisk        //逻辑磁盘
Win32_LogicalDiskToPartition        //逻辑磁盘所在分区及始末位置
Win32_LogicalMemoryConfiguration        //逻辑内存配置
Win32_PageFile        //系统页文件信息
Win32_PageFileSetting        //页文件设置
Win32_BootConfiguration        //系统启动配置
Win32_ComputerSystem        //计算机信息简要
Win32_OperatingSystem        //操作系统信息
Win32_StartupCommand        //系统自动启动程序
Win32_Service        //系统安装的服务
Win32_Group        //系统管理组
Win32_GroupUser        //系统组帐号
Win32_UserAccount        //用户帐号
Win32_Process        //系统进程
Win32_Thread        //系统线程
Win32_Share        //共享
Win32_NetworkClient        //已安装的网络客户端
Win32_NetworkProtocol        //已安装的网络协议
Win32_PnPEntity        //all device 【所有设备】

属性说明

Caption  --简短说明
ConfigOptions   --数组,表示位于在底板上跳线和开关的配置。
CreationClassName  --表示类的名称(就是Win32_baseboard类)
Depth   --以英寸为单位的物理封装。
Description  --对象的描述(底板)
Height  --用英寸表示的物理包的高度
HostingBoard  --如果为TRUE,该卡是一个主板,或在一个机箱中的基板。
HotSwappable  --如果为TRUE,就是支持热插拔(判断是否支持热插拔)
InstallDate  --日期和时间对象安装。此属性不需要的值以表示已安装的对象。
Manufacturer  --表示制造商的名称
Model  --物理元素的名称是已知。
Name   --对象的名称标签
OtherIdentifyingInfo  --捕获附加数据,超出资产标签的信息,可以用来标识物理元件
PartNumber  --由负责生产或制造的物理元素的组织分配部件编号。
PoweredOn  --如果为真,物理元素处于开机状态。
Product  --产品的型号
Removable  --判断是否可拆卸的
Replaceable  --判断是否可更换的
RequirementsDescription  --自由格式字符串描述方式,这张卡是身体不同于其他卡。该属性才有意义时,相对应的布尔值属性特殊要求是集真的
RequiresDaughterBoard  --如果是TRUE,至少一个子板或辅助卡才能正常工作。
SerialNumber  --制造商分配的用于识别所述物理元件数目。
SKU  --库存的物理单元号。
SlotLayout  --描述插槽位置
SpecialRequirements  --如果为真,此卡是同类型的其他卡物理上唯一的,因此需要一个专门的插槽
Status  --对象的当前状态。
Tag  --符系统的基板唯一标识
Version  --物理元素的版本
Weight  --物理元素的重量英镑表示
Width  --用英寸表示的物理元素的宽度 

wmic

也可以使用wmic命令获取对应信息
常用命令如下
基础信息

计算机的序列号: wmic csproduct
屏幕信息: wmic desktopmonitor
操作系统的名称: wmic os get name

CPU信息

查看计算机CPU信息:wmic cpu
查看cpu详细信息: wmic cpu list brief
获取cpu名称: wmic cpu get Name
获取cpu核心数: wmic cpu get NumberOfCores
获取cpu线程数: wmic cpu get NumberOfLogicalProcessors
查询cpu序列号: wmic cpu get processorid

主板信息

主板信息: wmic baseboard
查询主板序列号:wmic baseboard get serialnumber
BIOS信息: wmic bios
BIOS序列号:wmic bios get serialnumber

磁盘信息

查看磁盘驱动器信息:wmic diskdrive
查看硬盘序列号:wmic diskdrive where index=0 get serialnumber
查看磁盘逻辑分区信息: wmic logicaldisk [get caption]
查看磁盘卷信息: wmic volume
查看磁盘的剩余空间【以C盘为例】: fsutil volume diskfree c:

内存信息

内存芯片信息:wmic memorychip
查看物理内存: wmic memphysical list brief
查看逻辑内存: wmic memlogical list brief
查看缓存内存: wmic memcache list brief
查看虚拟内存: wmic pagefile list brief

声卡信息

声卡信息: wmic sounddev

网卡信息

网卡信息: wmic nic
查看网卡: wmic nic list brief
网络协议信息: wmic netprotocal

其他

Window下其他查看硬件信息方法【命令】
systeminfo :计算机及其操作系统的详细配置信息,包括Windows系统安装时间补丁等详细信息、处理器、内存、BISO、网卡和IP地址等,也最常用的;
sysdm.cpl :打开系统属性【鼠标选中计算机–>右键–>属性】
dxdiag :打开DirectX诊断工具【可以显示显卡信息】
start msinfo32 :打开系统信息窗口
devmgmt.msc :打开设备管理
taskmgr :打开任务管理器,或按Ctrl+Alt+Del) 在性能选项卡看物理内存和pagefile
winver 检查Windows版本
关闭本地计算机: wmic process call create shutdown.exe
获取进程名称以及可执行路径: wmic process get name,executablepath

参考

posted @ 2022-10-26 16:34  Hey,Coder!  阅读(674)  评论(0编辑  收藏  举报