C# 通过 ManagementObjectSearcher 查询设备基本信息

在WMI中对象名如下:

通过C#可以很简易的得到计算机硬件的信息。

1)添加名为System.ManageMent的DLL。具体方法为:解决方案->添加引用-> .NET -> System.ManageMent。

2)在源文件中添加命名空间using System.Management。

Win32_1394Controller

Win32_1394ControllerDevice

Win32_Account

Win32_AccountSID

Win32_ACE

Win32_ActionCheck

Win32_AllocatedResource

Win32_ApplicationCommandLine

Win32_ApplicationService

Win32_AssociatedBattery

Win32_AssociatedProcessorMemory

Win32_BaseBoard

Win32_BaseService

Win32_Battery

Win32_Binary

Win32_BindImageAction

Win32_BIOS

Win32_BootConfiguration

Win32_Bus

Win32_CacheMemory

Win32_CDROMDrive

Win32_CheckCheck

Win32_CIMLogicalDeviceCIMDataFile

Win32_ClassicCOMApplicationClasses

Win32_ClassicCOMClass

Win32_ClassicCOMClassSetting

Win32_ClassicCOMClassSettings

Win32_ClassInfoAction

Win32_ClientApplicationSetting

Win32_CodecFile

Win32_COMApplication

Win32_COMApplicationClasses

Win32_COMApplicationSettings

Win32_COMClass

Win32_ComClassAutoEmulator

Win32_ComClassEmulator

Win32_CommandLineAccess

Win32_ComponentCategory

Win32_ComputerSystem

Win32_ComputerSystemProcessor

Win32_ComputerSystemProduct

Win32_COMSetting

Win32_Condition

Win32_CreateFolderAction

Win32_CurrentProbe

Win32_DCOMApplication

Win32_DCOMApplicationAccessAllowedSetting

Win32_DCOMApplicationLaunchAllowedSetting

Win32_DCOMApplicationSetting

Win32_DependentService

Win32_Desktop

Win32_DesktopMonitor

Win32_DeviceBus

Win32_DeviceMemoryAddress

Win32_DeviceSettings

Win32_Directory

Win32_DirectorySpecification

Win32_DiskDrive

Win32_DiskDriveToDiskPartition

Win32_DiskPartition

Win32_DisplayConfiguration

Win32_DisplayControllerConfiguration

Win32_DMAChannel

Win32_DriverVXD

Win32_DuplicateFileAction

Win32_Environment

Win32_EnvironmentSpecification

Win32_ExtensionInfoAction

Win32_Fan

Win32_FileSpecification

Win32_FloppyController

Win32_FloppyDrive

Win32_FontInfoAction

Win32_Group

Win32_GroupUser

Win32_HeatPipe

Win32_IDEController

Win32_IDEControllerDevice

Win32_ImplementedCategory

Win32_InfraredDevice

Win32_IniFileSpecification

Win32_InstalledSoftwareElement

Win32_IRQResource

Win32_Keyboard

Win32_LaunchCondition

Win32_LoadOrderGroup

Win32_LoadOrderGroupServiceDependencies

Win32_LoadOrderGroupServiceMembers

Win32_LogicalDisk

Win32_LogicalDiskRootDirectory

Win32_LogicalDiskToPartition

Win32_LogicalFileAccess

Win32_LogicalFileAuditing

Win32_LogicalFileGroup

Win32_LogicalFileOwner

Win32_LogicalFileSecuritySetting

Win32_LogicalMemoryConfiguration

Win32_LogicalProgramGroup

Win32_LogicalProgramGroupDirectory

Win32_LogicalProgramGroupItem

Win32_LogicalProgramGroupItemDataFile

Win32_LogicalShareAccess

Win32_LogicalShareAuditing

Win32_LogicalShareSecuritySetting

Win32_ManagedSystemElementResource

Win32_MemoryArray

Win32_MemoryArrayLocation

Win32_MemoryDevice

Win32_MemoryDeviceArray

Win32_MemoryDeviceLocation

Win32_MethodParameterClass

Win32_MIMEInfoAction

Win32_MotherboardDevice

Win32_MoveFileAction

Win32_MSIResource

Win32_NetworkAdapter

Win32_NetworkAdapterConfiguration

Win32_NetworkAdapterSetting

Win32_NetworkClient

Win32_NetworkConnection

Win32_NetworkLoginProfile

Win32_NetworkProtocol

Win32_NTEventlogFile

Win32_NTLogEvent

Win32_NTLogEventComputer

Win32_NTLogEventLog

Win32_NTLogEventUser

Win32_ODBCAttribute

Win32_ODBCDataSourceAttribute

Win32_ODBCDataSourceSpecification

Win32_ODBCDriverAttribute

Win32_ODBCDriverSoftwareElement

Win32_ODBCDriverSpecification

Win32_ODBCSourceAttribute

Win32_ODBCTranslatorSpecification

Win32_OnBoardDevice

Win32_OperatingSystem

Win32_OperatingSystemQFE

Win32_OSRecoveryConfiguration

Win32_PageFile

Win32_PageFileElementSetting

Win32_PageFileSetting

Win32_PageFileUsage

Win32_ParallelPort

Win32_Patch

Win32_PatchFile

Win32_PatchPackage

Win32_PCMCIAController

Win32_Perf

Win32_PerfRawData

Win32_PerfRawData_ASP_ActiveServerPages

Win32_PerfRawData_ASPNET_114322_ASPNETAppsv114322

Win32_PerfRawData_ASPNET_114322_ASPNETv114322

Win32_PerfRawData_ASPNET_ASPNET

Win32_PerfRawData_ASPNET_ASPNETApplications

Win32_PerfRawData_IAS_IASAccountingClients

Win32_PerfRawData_IAS_IASAccountingServer

Win32_PerfRawData_IAS_IASAuthenticationClients

Win32_PerfRawData_IAS_IASAuthenticationServer

Win32_PerfRawData_InetInfo_InternetInformationServicesGlobal

Win32_PerfRawData_MSDTC_DistributedTransactionCoordinator

Win32_PerfRawData_MSFTPSVC_FTPService

Win32_PerfRawData_MSSQLSERVER_SQLServerAccessMethods

Win32_PerfRawData_MSSQLSERVER_SQLServerBackupDevice

Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager

Win32_PerfRawData_MSSQLSERVER_SQLServerBufferPartition

Win32_PerfRawData_MSSQLSERVER_SQLServerCacheManager

Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases

Win32_PerfRawData_MSSQLSERVER_SQLServerGeneralStatistics

Win32_PerfRawData_MSSQLSERVER_SQLServerLatches

Win32_PerfRawData_MSSQLSERVER_SQLServerLocks

Win32_PerfRawData_MSSQLSERVER_SQLServerMemoryManager

Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationAgents

Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationDist

Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationLogreader

Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationMerge

Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationSnapshot

Win32_PerfRawData_MSSQLSERVER_SQLServerSQLStatistics

Win32_PerfRawData_MSSQLSERVER_SQLServerUserSettable

Win32_PerfRawData_NETFramework_NETCLRExceptions

Win32_PerfRawData_NETFramework_NETCLRInterop

Win32_PerfRawData_NETFramework_NETCLRJit

Win32_PerfRawData_NETFramework_NETCLRLoading

Win32_PerfRawData_NETFramework_NETCLRLocksAndThreads

Win32_PerfRawData_NETFramework_NETCLRMemory

Win32_PerfRawData_NETFramework_NETCLRRemoting

Win32_PerfRawData_NETFramework_NETCLRSecurity

Win32_PerfRawData_Outlook_Outlook

Win32_PerfRawData_PerfDisk_PhysicalDisk

Win32_PerfRawData_PerfNet_Browser

Win32_PerfRawData_PerfNet_Redirector

Win32_PerfRawData_PerfNet_Server

Win32_PerfRawData_PerfNet_ServerWorkQueues

Win32_PerfRawData_PerfOS_Cache

Win32_PerfRawData_PerfOS_Memory

Win32_PerfRawData_PerfOS_Objects

Win32_PerfRawData_PerfOS_PagingFile

Win32_PerfRawData_PerfOS_Processor

Win32_PerfRawData_PerfOS_System

Win32_PerfRawData_PerfProc_FullImage_Costly

Win32_PerfRawData_PerfProc_Image_Costly

Win32_PerfRawData_PerfProc_JobObject

Win32_PerfRawData_PerfProc_JobObjectDetails

Win32_PerfRawData_PerfProc_Process

Win32_PerfRawData_PerfProc_ProcessAddressSpace_Costly

Win32_PerfRawData_PerfProc_Thread

Win32_PerfRawData_PerfProc_ThreadDetails_Costly

Win32_PerfRawData_RemoteAccess_RASPort

Win32_PerfRawData_RemoteAccess_RASTotal

Win32_PerfRawData_RSVP_ACSPerRSVPService

Win32_PerfRawData_Spooler_PrintQueue

Win32_PerfRawData_TapiSrv_Telephony

Win32_PerfRawData_Tcpip_ICMP

Win32_PerfRawData_Tcpip_IP

Win32_PerfRawData_Tcpip_NBTConnection

Win32_PerfRawData_Tcpip_NetworkInterface

Win32_PerfRawData_Tcpip_TCP

Win32_PerfRawData_Tcpip_UDP

Win32_PerfRawData_W3SVC_WebService

Win32_PhysicalMemory

Win32_PhysicalMemoryArray

Win32_PhysicalMemoryLocation

Win32_PNPAllocatedResource

Win32_PnPDevice

Win32_PnPEntity

Win32_PointingDevice

Win32_PortableBattery

Win32_PortConnector

Win32_PortResource

Win32_POTSModem

Win32_POTSModemToSerialPort

Win32_PowerManagementEvent

Win32_Printer

Win32_PrinterConfiguration

Win32_PrinterController

Win32_PrinterDriverDll

Win32_PrinterSetting

Win32_PrinterShare

Win32_PrintJob

Win32_PrivilegesStatus

Win32_Process

Win32_Processor

Win32_ProcessStartup

Win32_Product

Win32_ProductCheck

Win32_ProductResource

Win32_ProductSoftwareFeatures

Win32_ProgIDSpecification

Win32_ProgramGroup

Win32_ProgramGroupContents

Win32_ProgramGroupOrItem

Win32_Property

Win32_ProtocolBinding

Win32_PublishComponentAction

Win32_QuickFixEngineering

Win32_Refrigeration

Win32_Registry

Win32_RegistryAction

Win32_RemoveFileAction

Win32_RemoveIniAction

Win32_ReserveCost

Win32_ScheduledJob

Win32_SCSIController

Win32_SCSIControllerDevice

Win32_SecurityDescriptor

Win32_SecuritySetting

Win32_SecuritySettingAccess

Win32_SecuritySettingAuditing

Win32_SecuritySettingGroup

Win32_SecuritySettingOfLogicalFile

Win32_SecuritySettingOfLogicalShare

Win32_SecuritySettingOfObject

Win32_SecuritySettingOwner

Win32_SelfRegModuleAction

Win32_SerialPort

Win32_SerialPortConfiguration

Win32_SerialPortSetting

Win32_Service

Win32_ServiceControl

Win32_ServiceSpecification

Win32_ServiceSpecificationService

Win32_SettingCheck

Win32_Share

Win32_ShareToDirectory

Win32_ShortcutAction

Win32_ShortcutFile

Win32_ShortcutSAP

Win32_SID

Win32_SMBIOSMemory

Win32_SoftwareElement

Win32_SoftwareElementAction

Win32_SoftwareElementCheck

Win32_SoftwareElementCondition

Win32_SoftwareElementResource

Win32_SoftwareFeature

Win32_SoftwareFeatureAction

Win32_SoftwareFeatureCheck

Win32_SoftwareFeatureParent

Win32_SoftwareFeatureSoftwareElements

Win32_SoundDevice

Win32_StartupCommand

Win32_SubDirectory

Win32_SystemAccount

Win32_SystemBIOS

Win32_SystemBootConfiguration

Win32_SystemDesktop

Win32_SystemDevices

Win32_SystemDriver

Win32_SystemDriverPNPEntity

Win32_SystemEnclosure

Win32_SystemLoadOrderGroups

Win32_SystemLogicalMemoryConfiguration

Win32_SystemMemoryResource

Win32_SystemNetworkConnections

Win32_SystemOperatingSystem

Win32_SystemPartitions

Win32_SystemProcesses

Win32_SystemProgramGroups

Win32_SystemResources

Win32_SystemServices

Win32_SystemSetting

Win32_SystemSlot

Win32_SystemSystemDriver

Win32_SystemTimeZone

Win32_SystemUsers

Win32_TapeDrive

Win32_TemperatureProbe

Win32_Thread

Win32_TimeZone

Win32_Trustee

Win32_TypeLibraryAction

Win32_UninterruptiblePowerSupply

Win32_USBController

Win32_USBControllerDevice

Win32_UserAccount

Win32_UserDesktop

Win32_VideoConfiguration

Win32_VideoController

Win32_VideoSettings

Win32_VoltageProbe

Win32_WMIElementSetting

Win32_WMISetting

public class ComputerHelper
    {
        /// <summary>
        /// 获取CPU号码
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> Cpu()
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            foreach (var obj in searcher.Get())
            {
                result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                NumberOfLogicalProcessors=obj["NumberOfLogicalProcessors"],
                                NumberOfCores=obj["NumberOfCores"],
                                Family=obj["Family"],
                                ProcessorType=obj["ProcessorType"],
                                CpuStatus=obj["CpuStatus"],
                                CurrentClockSpeed=obj["CurrentClockSpeed"],
                                CurrentVoltage=obj["CurrentVoltage"],
                                Description=obj["Description"],
                                L2CacheSize=obj["L2CacheSize"],
                                LoadPercentage=obj["LoadPercentage"],
                                Name=obj["Name"]
                           }
                        }
                    });
            }
            return result;
        }

        /// <summary>
        /// 获取内存编号
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> Memory()
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            foreach (var obj in searcher.Get())
            {
                result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Capacity  =obj["Capacity"],//获取内存容量(单位KB)
                                Caption=obj["Caption"],//物理内存还虚拟内存
                                ConfiguredClockSpeed=obj["ConfiguredClockSpeed"],//配置时钟速度
                                ConfiguredVoltage=obj["ConfiguredVoltage"],//配置电压
                                DataWidth=obj["DataWidth"],//获取内存带宽
                                SerialNumber=obj["SerialNumber"],//编号
                                Speed=obj["Speed"],
                                Status=obj["Status"],
                                PartNumber=obj["PartNumber"],//零件编号
                                Description  =obj["Description"],
                                Name=obj["Name"],
                                Model=obj["Model"]
                           }
                        }
                    });
            }
            return result;
        }

        /// <summary>
        /// 获取串口配制信息
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> SerialPort()
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_SerialPortConfiguration");
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            foreach (var obj in searcher.Get())
            {
                result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Caption=obj["Caption"],
                                Description=obj["Description"],
                                BaudRate=obj["BaudRate"],
                                BinaryModeEnabled=obj["BinaryModeEnabled"],
                                BitsPerByte=obj["BitsPerByte"],
                                ContinueXMitOnXOff=obj["ContinueXMitOnXOff"],
                                CTSOutflowControl=obj["CTSOutflowControl"],
                                Name=obj["Name"],
                                IsBusy=obj["IsBusy"],
                                StopBits=obj["StopBits"],
                                ParityCheckEnabled=obj["ParityCheckEnabled"],
                           }
                        }
                    });
            }
            return result;
        }

        /// <summary>
        /// 获取网卡
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> NetworkAdapter()
        {
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration");
            foreach (var obj in searcher.Get())
            {
                try
                {
                    result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Description=obj["Description"],
                                DHCPServer=obj["DHCPServer"],
                                DNSHostName=obj["DNSHostName"],
                                IPAddress=obj["IPAddress"],
                                MACAddress=obj["MACAddress"],
                                MTU=obj["MTU"],
                                GatewayCostMetric=obj["GatewayCostMetric"]
                           }
                        }
                    });
                }
                catch
                {

                }
            }
            return result;
        }

        /// <summary>
        /// 取得打印机信息
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> Printer()
        {
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PrinterConfiguration");
            foreach (var obj in searcher.Get())
            {
                try
                {
                    result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Description=obj["Description"],
                                DeviceName=obj["DeviceName"],
                                FormName=obj["FormName"],
                                Name=obj["Name"],
                                Color=obj["Color"],
                                Copies=obj["Copies"],
                                Orientation=obj["Orientation"],
                                PaperLength=obj["PaperLength"],
                                PaperSize=obj["PaperSize"],
                                PaperWidth=obj["PaperWidth"],
                                PelsHeight=obj["PelsHeight"],
                                PelsWidth=obj["PelsWidth"],
                                PrintQuality=obj["PrintQuality"],
                                Scale=obj["Scale"],
                                XResolution=obj["XResolution"],
                                YResolution=obj["YResolution"]
                           }
                        }
                    });
                }
                catch
                {

                }
            }
            return result;
        }


        /// <summary>
        /// 取得USB信息
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> Usb()
        {
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_USBController");
            foreach (var obj in searcher.Get())
            {
                try
                {
                    result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Availability=obj["Availability"],
                                Caption=obj["Caption"],
                                Description=obj["Description"],
                                DeviceID=obj["DeviceID"],
                                InstallDate=obj["InstallDate"],
                                Manufacturer=obj["Manufacturer"],
                                MaxNumberControlled=obj["MaxNumberControlled"],
                                ProtocolSupported=obj["ProtocolSupported"],
                                Status=obj["Status"]
                           }
                        }
                    });
                }
                catch
                {

                }
            }
            return result;
        }


        /// <summary>
        /// 取得Disk信息
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> Disk()
        {
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
            foreach (var obj in searcher.Get())
            {
                try
                {
                    result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Description=obj["Description"],
                                Capabilities=obj["Capabilities"],
                                Size=obj["Size"],
                                Name=obj["Name"],
                                Model=obj["Model"],
                                Manufacturer=obj["Manufacturer"],
                                MaxBlockSize=obj["MaxBlockSize"],
                                SerialNumber=obj["SerialNumber"],
                                MaxMediaSize=obj["MaxMediaSize"],
                                Status=obj["Status"]
                           }
                        }
                    });
                }
                catch
                {

                }
            }
            return result;
        }


        /// <summary>
        /// 取得磁盘分区信息
        /// </summary>
        /// <returns></returns>
        public static List<Dictionary<string, object>> DiskPartition()
        {
            List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskPartition");
            foreach (var obj in searcher.Get())
            {
                try
                {
                    result.Add(new Dictionary<string, object>()
                    {
                        {
                           result.Count.ToString(),
                           new  {
                                Availability=obj["Availability"],
                                DeviceID=obj["DeviceID"],
                                Description=obj["Description"],
                                Name=obj["Name"],
                                Size=obj["Size"],
                                Bootable=obj["Bootable"],
                                BootPartition=obj["BootPartition"],
                                Type=obj["Type"],
                                DiskIndex=obj["DiskIndex"],
                                Status=obj["Status"]
                           }
                        }
                    });
                }
                catch
                {

                }
            }
            return result;
        }
    }