获取windows 操作系统下的硬件或操作系统信息等

  • A+
所属分类:.NET技术
摘要

  奇怪的工作,制作的是一款办公应用软件,领导却要求我统计用户计算机的物理信息,什么CPU的型号、核心数,什么内存信息等各种乱七八糟的用户信息。我想问,现在用户的信息就这么没有隐私性了么?想获取就获取传递到后台……无奈我只是民工,还是老老实实做了。然后查阅了一些资料,主要用到了System.Management命名空间下的信息(System.Management 命名空间 | Microsoft Docs)。

  奇怪的工作,制作的是一款办公应用软件,领导却要求我统计用户计算机的物理信息,什么CPU的型号、核心数,什么内存信息等各种乱七八糟的用户信息。我想问,现在用户的信息就这么没有隐私性了么?想获取就获取传递到后台……无奈我只是民工,还是老老实实做了。然后查阅了一些资料,主要用到了System.Management命名空间下的信息(System.Management 命名空间 | Microsoft Docs)。

1、引用

  在查询计算机硬件或者操作系统的信息时,使用ManagementObjectSearcher类或者ManagementClass类,其在在System.Management命名空间下,需要添加对System.Management的引用。

  在日常的编程中,我们可以通过Environment获得一些简单的系统信息,如获得操作系统登录用户名:Environment.UserName。 但更多、复杂的信息并不能获得。

2、用法

  下面两部分代码分别演示获取操作系统信息:

  1、使用ManagementObjectSearcher类

ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");//注意查询的类型 from * ManagementObjectSearcher searcher =new ManagementObjectSearcher(query);//也可以直接将查询字符串写入这个构造函数中 ManagementObjectCollection queryCollection = searcher.Get();  foreach (ManagementObject m in queryCollection) {     Console.WriteLine("Computer Name : {0}",  m["csname"]);     Console.WriteLine("Windows Directory : {0}", m["WindowsDirectory"]);     Console.WriteLine("Operating System: {0}", m["Caption"]);     Console.WriteLine("Version: {0}", m["Version"]);     Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]); }

  2、使用ManagementClass类

ManagementClass mc = new ManagementClass("Win32_OperatingSystem");//填入需要查询的类型 ManagementObjectCollection queryCollection = mc.GetInstances(); foreach (ManagementObject m in queryCollection) {     Console.WriteLine("Computer Name : {0}", m["csname"]);     Console.WriteLine("Windows Directory : {0}", m["WindowsDirectory"]);     Console.WriteLine("Operating System: {0}", m["Caption"]);     Console.WriteLine("Version: {0}", m["Version"]);     Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]); }

  如果不知道要获取的属性名称,可以循环遍历打印出来(注意获取值的方式有两种)。

ManagementClass mc = new ManagementClass("Win32_OperatingSystem");//填入需要查询的类型 ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) {     foreach (PropertyData pd in mo.Properties)     {         if (mo[pd.Name] != null && mo[pd.Name].ToString() != "")         {             Console.WriteLine(string.Format("{0}:{1}", pd.Name, mo.GetPropertyValue(pd.Name)));         }     } }

3、示例

  以生成注册码为例,注册码使用CPU的序列号和C盘的序列号为基准:

/// <summary> /// 获取CPU序列号 /// </summary> /// <returns></returns> private string GetCpuNum() {     ManagementClass mc = new ManagementClass("Win32_Processor");//填入需要查询的类型     ManagementObjectCollection queryCollection = mc.GetInstances();     foreach (ManagementObject m in queryCollection)     {        return m.GetPropertyValue("Processorid").ToString();     }     return string.Empty; }  /// <summary> /// 取得设备硬盘的卷标号 /// </summary> /// <returns></returns> private Dictionary<string,string> GetDiskVolumeSerialNumber() {     Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();      ManagementClass mc = new ManagementClass("Win32_LogicalDisk");//填入需要查询的类型     ManagementObjectCollection queryCollection = mc.GetInstances();     foreach (ManagementObject mo in queryCollection)     {         keyValuePairs.Add(mo.GetPropertyValue("DeviceID").ToString().Trim(':'), mo.GetPropertyValue("VolumeSerialNumber").ToString());     }     return keyValuePairs; } ///<summary>  ///生成注册码  ///</summary>  ///<returns></returns>  public string GetRegCode() {     int[] intCode = new int[127];//存储密钥     int[] intNumber = new int[25];//存机器码的Ascii值     char[] Charcode = new char[25];//存储机器码字     //初始化127位数组     for (int i = 1; i < intCode.Length; i++)     {         intCode[i] = i % 9;     }     string cpuNum = GetCpuNum();     string diskSerialNumber = GetDiskVolumeSerialNumber()["C"];     string strNum = cpuNum + diskSerialNumber;//生成机器码     string MNum = strNum.Substring(0, 24);//从生成的字符串中取出前24个字符做为机器码     for (int i = 1; i < Charcode.Length; i++)//把机器码存入数组中     {         Charcode[i] = Convert.ToChar(MNum.Substring(i - 1, 1));      }     for (int j = 1; j < intNumber.Length; j++)//把字符的ASCII值存入一个整数组中。     {         intNumber[j] = intCode[Convert.ToInt32(Charcode[j])] + Convert.ToInt32(Charcode[j]);     }     string strAsciiName = "";//用于存储注册码     for (int j = 1; j < intNumber.Length; j++)     {         if (intNumber[j] >= 48 && intNumber[j] <= 57)//判断字符ASCII值是否0-9之间         {             strAsciiName += Convert.ToChar(intNumber[j]).ToString();         }         else if (intNumber[j] >= 65 && intNumber[j] <= 90)//判断字符ASCII值是否A-Z之间         {             strAsciiName += Convert.ToChar(intNumber[j]).ToString();         }         else if (intNumber[j] >= 97 && intNumber[j] <= 122)//判断字符ASCII值是否a-z之间         {             strAsciiName += Convert.ToChar(intNumber[j]).ToString();         }         else//判断字符ASCII值不在以上范围内         {             if (intNumber[j] > 122)//判断字符ASCII值是否大于z             {                 strAsciiName += Convert.ToChar(intNumber[j] - 10).ToString();             }             else             {                 strAsciiName += Convert.ToChar(intNumber[j] - 9).ToString();             }         }     }     return strAsciiName;//返回注册码 }

4、常用的Key

  ObjectQuery和ManagementClass都需要输入Key值,以明确需要获取什么类型的数据。其常用的Key值如下:

internal enum WmiType {     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, // 已安装的网络协议  }

5、全部Key值

获取windows 操作系统下的硬件或操作系统信息等获取windows 操作系统下的硬件或操作系统信息等

 internal enum WmiType  {       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_PhysicalMedia,      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_TCPIPPrinterPort,       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,  }

全部key值