C#使用ManagementObjectSearcher获取本计算机CPU,硬盘,内存条等相关设备信息

C#使用ManagementObjectSearcher获取本计算机CPU,硬盘,内存条等相关设备信息C#获取本操作系统显卡,CPU,硬盘等信息

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

C#获取本操作系统显卡,CPU,硬盘等相关信息,使用ManagementObjectSearcher对象来进行查询。

添加 引用 程序集 框架 System.Management

一、新建窗体应用程序DeviceManagerDemo。重命名Form1为FormDeviceManager。

FormDeviceManager.cs相关源代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DeviceManagerDemo
{

    public partial class FormDeviceManager : Form
    {

        public FormDeviceManager()
        {

            InitializeComponent();
            //绑定设备管理器
            BindAllComboBox();
            //组合框选择索引的改变事件
            cboHardware.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
            cboOperatingSystem.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
        }

        private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {

            ComboBox cbo = sender as ComboBox;
            if (cbo == null || cbo.SelectedIndex < 0) 
            {

                return;
            }
            string queryKey = cbo.SelectedValue as string;
            DisplayDeviceMessage(queryKey);      
        }

        /// <summary>
        /// 绑定硬件和操作系统 设备管理器
        /// </summary>
        private void BindAllComboBox() 
        {

            List<Tuple<string, string>> listHandware = new List<Tuple<string, string>>();
            listHandware.Add(Tuple.Create(“Win32_Processor”, “CPU中央处理器”));
            listHandware.Add(Tuple.Create(“Win32_PhysicalMemory”, “物理内存条”));
            listHandware.Add(Tuple.Create(“Win32_Keyboard”, “键盘”));
            listHandware.Add(Tuple.Create(“Win32_PointingDevice”, “点输入设备,包括鼠标。”));
            listHandware.Add(Tuple.Create(“Win32_FloppyDrive”, “软盘驱动器”));
            listHandware.Add(Tuple.Create(“Win32_DiskDrive”, “硬盘驱动器”));
            listHandware.Add(Tuple.Create(“Win32_CDROMDrive”, “光盘驱动器”));
            listHandware.Add(Tuple.Create(“Win32_BaseBoard”, “主板”));
            listHandware.Add(Tuple.Create(“Win32_BIOS”, “BIOS芯片”));
            listHandware.Add(Tuple.Create(“Win32_ParallelPort”, “并口”));
            listHandware.Add(Tuple.Create(“Win32_SerialPort”, “串口”));
            listHandware.Add(Tuple.Create(“Win32_SerialPortConfiguration”, “串口配置”));
            listHandware.Add(Tuple.Create(“Win32_SoundDevice”, “多媒体设备,一般指声卡”));
            listHandware.Add(Tuple.Create(“Win32_SystemSlot”, “主板插槽 (ISA & PCI & AGP)”));
            listHandware.Add(Tuple.Create(“Win32_USBController”, “USB控制器”));
            listHandware.Add(Tuple.Create(“Win32_NetworkAdapter”, “网络适配器”));
            listHandware.Add(Tuple.Create(“Win32_NetworkAdapterConfiguration”, “网络适配器设置”));
            listHandware.Add(Tuple.Create(“Win32_Printer”, “打印机”));
            listHandware.Add(Tuple.Create(“Win32_PrinterConfiguration”, “打印机设置”));
            listHandware.Add(Tuple.Create(“Win32_PrintJob”, “打印机任务”));
            listHandware.Add(Tuple.Create(“Win32_TCPIPPrinterPort”, “打印机端口”));
            listHandware.Add(Tuple.Create(“Win32_POTSModem”, “MODEM”));
            listHandware.Add(Tuple.Create(“Win32_POTSModemToSerialPort”, “MODEM端口”));
            listHandware.Add(Tuple.Create(“Win32_DesktopMonitor”, “显示器”));
            listHandware.Add(Tuple.Create(“Win32_DisplayConfiguration”, “显卡”));
            listHandware.Add(Tuple.Create(“Win32_DisplayControllerConfiguration”, “显卡设置”));
            listHandware.Add(Tuple.Create(“Win32_VideoController”, “显卡视频控制器”));
            listHandware.Add(Tuple.Create(“Win32_VideoSettings”, “显卡支持的显示模式”));
            BindCombo(listHandware, cboHardware);

            List<Tuple<string, string>> listOperatingSystem = new List<Tuple<string, string>>();
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_TimeZone”, “时区”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_SystemDriver”, “驱动程序”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_DiskPartition”, “磁盘分区”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_LogicalDisk”, “逻辑磁盘”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_LogicalDiskToPartition”, “逻辑磁盘所在分区及始末位置”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_LogicalMemoryConfiguration”, “逻辑内存配置”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_PageFile”, “系统页文件信息”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_PageFileSetting”, “页文件设置”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_BootConfiguration”, “系统启动配置”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_ComputerSystem”, “计算机信息简要”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_OperatingSystem”, “操作系统信息”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_StartupCommand”, “系统自动启动程序”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_Service”, “系统安装的服务”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_Group”, “系统管理组”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_GroupUser”, “系统组帐号”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_UserAccount”, “用户帐号”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_Process”, “系统进程”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_Thread”, “系统线程”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_Share”, “共享”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_NetworkClient”, “已安装的网络客户端”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_NetworkProtocol”, “已安装的网络协议”));
            listOperatingSystem.Add(new Tuple<string, string>(“Win32_PnPEntity”, “all device 【所有设备】”));
            BindCombo(listOperatingSystem, cboOperatingSystem);
        }

        /// <summary>
        /// 数据绑定组合下拉框
        /// </summary>
        /// <param name=”listSource”></param>
        /// <param name=”cbo”></param>
        private void BindCombo(List<Tuple<string, string>> listSource, ComboBox cbo)
        {

            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = listSource;
            cbo.DataSource = bindingSource;
            cbo.ValueMember = “Item1”;
            cbo.DisplayMember = “Item2”;
        }

        /// <summary>
        /// 显示某一个设备的相关信息
        /// </summary>
        /// <param name=”queryKey”>查询的关键字</param>
        private void DisplayDeviceMessage(string queryKey)
        {

            rtxtDisplay.Clear();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(“SELECT * FROM ” + queryKey);
            ManagementObjectCollection managementObjectCollection = searcher.Get();
            DisplayMessage($”【{queryKey}】设备信息个数:{managementObjectCollection.Count}”);
            foreach (ManagementObject managementObject in managementObjectCollection)
            {

                DisplayMessage($”管理对象的属性个数:{managementObject.Properties.Count}”);
                StringBuilder sb = new StringBuilder();
                foreach (PropertyData propertyData in managementObject.Properties)
                {

                    List<string> listQualifier = new List<string>();
                    foreach (QualifierData qualifierData in propertyData.Qualifiers)
                    {

                        listQualifier.Add($”[{qualifierData.Name}:{qualifierData.Value}]”);
                    }
                    sb.Append($”    {propertyData.Name}:{propertyData.Value}–类型:【{propertyData.Type}】,限定符集合:【{string.Join(“,”, listQualifier)}】\n”);
                }
                DisplayMessage(sb.ToString());
                DisplayMessage($”管理对象的系统属性个数:{managementObject.SystemProperties.Count}”);
                sb = new StringBuilder();
                foreach (PropertyData propertyData in managementObject.SystemProperties)
                {

                    List<string> listQualifier = new List<string>();
                    foreach (QualifierData qualifierData in propertyData.Qualifiers)
                    {

                        listQualifier.Add($”[{qualifierData.Name}:{qualifierData.Value}]”);
                    }
                    sb.Append($”    {propertyData.Name}:{propertyData.Value}–类型:【{propertyData.Type}】,限定符集合:【{string.Join(“,”, listQualifier)}】\n”);
                }
                DisplayMessage(sb.ToString());
            }
        }

        private void FormDeviceManager_Load(object sender, EventArgs e)
        {

            //添加 引用 程序集 框架 System.Management
            ComboBox_SelectedIndexChanged(cboHardware, e);            
        }

        private void DisplayMessage(string message)
        {

            this.BeginInvoke(new Action(() =>
            {

                rtxtDisplay.AppendText($”{DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”)}–>{message}\n”);
                rtxtDisplay.ScrollToCaret();
            }));
        }
    }
}
 

二、程序运行如图:

C#使用ManagementObjectSearcher获取本计算机CPU,硬盘,内存条等相关设备信息

 

C#使用ManagementObjectSearcher获取本计算机CPU,硬盘,内存条等相关设备信息

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186819.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • drawcall优化_unity降低drawcall

    drawcall优化_unity降低drawcallunity3D对于移动平台的支持无可厚非,但是也有时候用Unity3D开发出来的应用、游戏在移动终端上的运行有着明显的效率问题,比如卡、画质等各种问题。自己在做游戏开发的时候偶有所得。对于主要影响性能的因素做个总结。主要因素有:       1.     Savedbybatching值过大  —->这个值主要是针对Mesh的批处理,这个值越高,应用就越卡

    2022年9月2日
  • 2022最新ES面试题整理(Elasticsearch面试指南系列)「建议收藏」

    2022最新ES面试题整理(Elasticsearch面试指南系列)「建议收藏」Elasticsearch经典面试题:10/50

    2022年9月4日
  • 车载逆变器设计[通俗易懂]

    车载逆变器设计[通俗易懂]逆变器,别称为变流器、反流器,是一种可将直流电转换为交流电的器件,由逆变桥、逻辑控制、滤波电路三大部分组成,主要包括输入接口、电压启动回路、MOS开关管、PWM控制器、直流变换回路、反馈回路、LC振荡及输出回路、负载等部分,可分为半桥逆变器、全桥逆变器等。目前已广泛适用于空调、家庭影院、电脑、电视、抽油烟机、风扇、照明、录像机等设备中  逆变变压器原理  它的工作原理流

    2022年6月8日
  • springboot开发视频网站_springboot实战项目视频

    springboot开发视频网站_springboot实战项目视频​此篇是基于springboot脚手架开发的在线电影实战开发教程和完整源码;在学习JAVA中很容易遇到各种小错误大家一定要多学多练哦开发环境:Escplise/Maven3.5JAVA版本/JDK1.8数据库/Mysql5.7Navicat部分功能展示在个人中心中可以直观看到账户余额、用户优惠券、以及最近购买记录;…

    2022年8月20日
  • leetcode题目分类_leetcode组合总和

    leetcode题目分类_leetcode组合总和原题链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,”flow”,”flight”]输出:”fl”示例 2:输入:strs = [“dog”,”racecar”,”car”]输出:””解释:输入不存在公共前缀。 提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成题解分

    2022年8月8日
  • Rabbitmq启动方式

    Rabbitmq启动方式Rabbitmq启动方式1以应用方式启动rabbitmq-server-detached后台启动Rabbitmq-server直接启动,如果你关闭窗口或者需要在改窗口使用其他命令时应用就会停止关闭:rabbitmqctlstop2、以服务方式启动(安装完之后在任务管理器中服务一栏能看到RabbtiMq)rabbitmq-serviceinstall安装服务…

    2022年10月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号