C#编程获取客户端计算机硬件及系统信息功能示例
作者:pan_junbiao 发布时间:2023-08-09 01:57:15
标签:C#,客户端,硬件,系统信息
本文实例讲述了C#编程获取客户端计算机硬件及系统信息功能。分享给大家供大家参考,具体如下:
这里使用C#获取客户端计算机硬件及系统信息 ,包括CPU、硬盘、IP、MAC地址、操作系统等。
1、项目引用System.Management库。
2、创建HardwareHandler.cs类文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
namespace MyStudy.Utility
{
/// <summary>
/// 计算机硬件处理类
/// </summary>
public class HardwareHandler
{
public enum WMIPath
{
// 硬件
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, // 已安装的网络协议
}
/// <summary>
/// Cpu信息
/// </summary>
/// <returns></returns>
public void CpuInfo()
{
try
{
ManagementClass mc = new ManagementClass(WMIPath.Win32_Processor.ToString());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("CPU编号:" + mo.Properties["ProcessorId"].Value);
Console.WriteLine("CPU型号:" + mo.Properties["Name"].Value);
Console.WriteLine("CPU状态:" + mo.Properties["Status"].Value);
Console.WriteLine("主机名称:" + mo.Properties["SystemName"].Value);
}
}
catch
{
Console.WriteLine("Erroe");
}
}
/// <summary>
/// 主板信息
/// </summary>
public void MainBoardInfo()
{
try
{
ManagementClass mc = new ManagementClass(WMIPath.Win32_BaseBoard.ToString());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("主板ID:" + mo.Properties["SerialNumber"].Value);
Console.WriteLine("制造商:" + mo.Properties["Manufacturer"].Value);
Console.WriteLine("型号:" + mo.Properties["Product"].Value);
Console.WriteLine("版本:" + mo.Properties["Version"].Value);
}
}
catch
{
Console.WriteLine("Erroe");
}
}
/// <summary>
/// 硬盘信息
/// </summary>
public void DiskDriveInfo()
{
try
{
ManagementClass mc = new ManagementClass(WMIPath.Win32_DiskDrive.ToString());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("硬盘SN:" + mo.Properties["SerialNumber"].Value);
Console.WriteLine("型号:" + mo.Properties["Model"].Value);
Console.WriteLine("大小:" + Convert.ToDouble(mo.Properties["Size"].Value) / (1024 * 1024 * 1024));
}
}
catch
{
Console.WriteLine("Erroe");
}
}
/// <summary>
/// 网络连接信息
/// </summary>
public void NetworkInfo()
{
try
{
ManagementClass mc = new ManagementClass(WMIPath.Win32_NetworkAdapterConfiguration.ToString());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("MAC地址:" + mo.Properties["MACAddress"].Value);
Console.WriteLine("IP地址:" + mo.Properties["IPAddress"].Value);
}
}
catch
{
Console.WriteLine("Erroe");
}
}
/// <summary>
/// 操作系统信息
/// </summary>
public void OsInfo()
{
try
{
ManagementClass mc = new ManagementClass(WMIPath.Win32_OperatingSystem.ToString());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("操作系统:" + mo.Properties["Name"].Value);
Console.WriteLine("版本:" + mo.Properties["Version"].Value);
Console.WriteLine("系统目录:" + mo.Properties["SystemDirectory"].Value);
}
}
catch
{
Console.WriteLine("Erroe");
}
}
}
}
希望本文所述对大家C#程序设计有所帮助。
0
投稿
猜你喜欢
- 1. 概述官方JavaDocsApi: java.awt.Component,java.awt.Containernull,绝对布局。绝对布
- 一、同步调用1、同步调用会按照代码顺序来执行2、同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,
- java 解决异常 2 字节的 UTF-8 序列的字节 2 无效的问题  
- 前言:小编引入的图片和文字描述都是来自于尚硅谷的视频讲解,在此感谢尚硅谷的老师,同时也结合 seata文档官方文档进行整合项目地址(gite
- 日志过滤对于一个网站日志,首先要对它进行过滤,删除一些不必要的信息,我们通过scala语言来实现,清洗代码如下,代码要通过别的软件打包为ja
- springMVC项目中实现图形验证码功能,可以使用kaptcha来实现,下面是步骤一、引入架包,pom.xml<dependency
- 在平时的开发过程中,会有很多场景需要实时监听文件的变化,如下:1、通过实时监控 mysql 的 binlog 日志实现数据同步2、修改配置文
- 前言在上一篇,我们谈到了jvm垃圾回收算法详细解析,并了解了JVM中针对堆区中不同的分代采用不同的垃圾回收算法在了解了垃圾回收算法之后,很多
- 背景最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上
- 简介SpringBoot提供了HATEOAS的便捷使用方式,本文详细讲解SpringBoot提供的这些基本方法。链接LinksHATEOAS
- 昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了
- 合成聚合复用原则合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP
- 当时用逆向生成后,实体类中的下划线都被去掉,这时只需要在sqlmap.xml中加以下代码即可。打开mybatis驼峰法则。 <sett
- 前言有人说Gradle使用groovy语言编写,简单,明了没像maven使用xml臃肿,其实我倒不觉得,我觉得maven挺好的,管理jar依
- 程序目的从java字节码层理解,为何i = i++后,结果是+1之前的数值。而i=++i后,结果是+1之后的值。关键指令iload_<
- public interface ICacheStrategy { &
- 前言传统的Restful API 存在诸多的问题,首先它无法控制返回的字段,前端也无法预判后端的返回结果,另外不同的返回结果对应不同的请求地
- 1、修改maven的pom文件只需要将如下依赖添加到pom.xml文件中即可。(注意此处是以plugin的方式,放在<plugins&
- 前言现如今几乎大多数Java应用,例如我们耳熟能详的tomcat, struts2, netty...等等数都数不过来的软件,要满足通用性,
- 1. 面试第一步,自我介绍。这个自我介绍,在整个面试当中可以说是第一步,如果你能把你想说的重点说出来,把面试官带到你准备好的技术点中,可以说