c# 获取电脑硬件信息通用查询类[测试通过]

简介: C#获取电脑硬件信息通用类[Computer]代码展示和分析,简介如下: 1.项目中添加System.Management引用。 2.添加类Computer,把下面代码全选,复制,粘贴。 3.使用方法new Computer().GetComputerName()。

C#获取电脑硬件信息通用类[Computer]代码展示和分析,简介如下:

1.项目中添加System.Management引用。

2.添加类Computer,把下面代码全选,复制,粘贴。

3.使用方法new Computer().GetComputerName()。

 

代码
 
  
using System;
using System.Management; // 添加System.Management引用

public class Computer
{
public string CpuID;
public string MacAddress;
public string DiskID;
public string IpAddress;
public string LoginUserName;
public string ComputerName;
public string SystemType;
public string TotalPhysicalMemory; // 单位:M
private static Computer _instance;
public static Computer Instance()
{
if (_instance == null )
_instance
= new Computer();
return _instance;
}
/// <summary>
/// 构造函数
/// </summary>
public Computer()
{
CpuID
= GetCpuID();
MacAddress
= GetMacAddress();
DiskID
= GetDiskID();
IpAddress
= GetIPAddress();
LoginUserName
= GetUserName();
SystemType
= GetSystemType();
TotalPhysicalMemory
= GetTotalPhysicalMemory();
ComputerName
= GetComputerName();
}
/// <summary>
/// 获取cpu序列号
/// </summary>
/// <returns></returns>
public string GetCpuID()
{
try
{
// 获取CPU序列号代码
string cpuInfo = "" ; // cpu序列号
ManagementClass mc = new ManagementClass( " Win32_Processor " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo
= mo.Properties[ " ProcessorId " ].Value.ToString();
}
moc
= null ;
mc
= null ;
return cpuInfo;
}
catch
{
return " unknow " ;
}
}
/// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns></returns>
public string GetMacAddress()
{
try
{
// 获取网卡硬件地址
string mac = "" ;
ManagementClass mc
= new ManagementClass( " Win32_NetworkAdapterConfiguration " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (( bool )mo[ " IPEnabled " ] == true )
{
mac
= mo[ " MacAddress " ].ToString();
break ;
}
}
moc
= null ;
mc
= null ;
return mac;
}
catch
{
return " unknow " ;
}
}
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns></returns>
public string GetIPAddress()
{
try
{
// 获取IP地址
string st = "" ;
ManagementClass mc
= new ManagementClass( " Win32_NetworkAdapterConfiguration " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (( bool )mo[ " IPEnabled " ] == true )
{
// st=mo["IpAddress"].ToString();
System.Array ar;
ar
= (System.Array)(mo.Properties[ " IpAddress " ].Value);
st
= ar.GetValue( 0 ).ToString();
break ;
}
}
moc
= null ;
mc
= null ;
return st;
}
catch
{
return " unknow " ;
}
}
/// <summary>
/// 获取硬盘ID
/// </summary>
/// <returns></returns>
public string GetDiskID()
{
try
{
// 获取硬盘ID
String HDid = "" ;
ManagementClass mc
= new ManagementClass( " Win32_DiskDrive " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
HDid
= ( string )mo.Properties[ " Model " ].Value;
}
moc
= null ;
mc
= null ;
return HDid;
}
catch
{
return " unknow " ;
}
}

/// <summary>
/// 操作系统的登录用户名
/// </summary>
/// <returns></returns>
public string GetUserName()
{
try
{
string st = "" ;
ManagementClass mc
= new ManagementClass( " Win32_ComputerSystem " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
st
= mo[ " UserName " ].ToString();
}
moc
= null ;
mc
= null ;
return st;
}
catch
{
return " unknow " ;
}
}


/// <summary>
/// PC类型
/// </summary>
/// <returns></returns>
public string GetSystemType()
{
try
{
string st = "" ;
ManagementClass mc
= new ManagementClass( " Win32_ComputerSystem " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
st
= mo[ " SystemType " ].ToString();
}
moc
= null ;
mc
= null ;
return st;
}
catch
{
return " unknow " ;
}
}

/// <summary>
/// 物理内存
/// </summary>
/// <returns></returns>
public string GetTotalPhysicalMemory()
{
try
{
string st = "" ;
ManagementClass mc
= new ManagementClass( " Win32_ComputerSystem " );
ManagementObjectCollection moc
= mc.GetInstances();
foreach (ManagementObject mo in moc)
{
st
= mo[ " TotalPhysicalMemory " ].ToString();
}
moc
= null ;
mc
= null ;
return st;
}
catch
{
return " unknow " ;
}
}
/// <summary>
/// 电脑名称
/// </summary>
/// <returns></returns>
public string GetComputerName()
{
try
{
return System.Environment.GetEnvironmentVariable( " ComputerName " );
}
catch
{
return " unknow " ;
}
}
}

 

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
22天前
|
开发框架 .NET API
以C#一分钟浅谈:GraphQL 数据类型与查询
本文从C#开发者的角度介绍了GraphQL的基本概念、核心组件及其实现方法。GraphQL由Facebook开发,允许客户端精确请求所需数据,提高应用性能。文章详细讲解了如何在C#中使用`GraphQL.NET`库创建Schema、配置ASP.NET Core,并讨论了GraphQL的数据类型及常见问题与解决方案。通过本文,C#开发者可以更好地理解并应用GraphQL,构建高效、灵活的API。
98 64
|
2月前
|
测试技术 C# 数据库
C# 单元测试框架 NUnit 一分钟浅谈
【10月更文挑战第17天】单元测试是软件开发中重要的质量保证手段,NUnit 是一个广泛使用的 .NET 单元测试框架。本文从基础到进阶介绍了 NUnit 的使用方法,包括安装、基本用法、参数化测试、异步测试等,并探讨了常见问题和易错点,旨在帮助开发者有效利用单元测试提高代码质量和开发效率。
167 64
|
13天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
60 13
|
19天前
|
开发框架 .NET 测试技术
C# 一分钟浅谈:GraphQL 数据类型与查询
本文介绍了GraphQL的基本概念、数据类型及查询方法,重点从C#角度探讨了GraphQL的应用。通过Hot Chocolate库的实例,展示了如何在ASP.NET Core中实现GraphQL API,包括安装、定义Schema、配置及运行项目。文中还讨论了常见问题与解决方案,旨在帮助开发者更好地理解和使用GraphQL。
23 2
|
1月前
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
56 7
|
2月前
|
测试技术 开发者
vertx的学习总结6之动态代理类和测试
本文是Vert.x学习系列的第六部分,介绍了如何使用动态代理在事件总线上公开服务,以及如何进行Vert.x组件的异步测试,包括动态代理的创建和使用,以及JUnit 5和Vert.x测试工具的结合使用。
26 3
vertx的学习总结6之动态代理类和测试
|
2月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
32 5
|
1月前
|
Kubernetes 测试技术 持续交付
C# 一分钟浅谈:集成测试与系统测试
【10月更文挑战第19天】本文详细介绍了集成测试和系统测试的概念、目的及其在软件开发中的重要性。通过分析常见问题和易错点,结合代码示例,探讨了如何通过代码规范、自动化测试和持续集成等方法提高测试效果,确保软件质量和可靠性。
87 1
|
2月前
|
测试技术 C# 数据库
C# 一分钟浅谈:测试驱动开发 (TDD) 实践
【10月更文挑战第18天】测试驱动开发(TDD)是一种软件开发方法论,强调先编写测试代码再编写功能代码,以确保代码质量和可维护性。本文从 TDD 的基本概念入手,详细介绍了其核心步骤——编写测试、运行测试并失败、编写代码使测试通过,以及“红绿重构”循环。文章还探讨了 TDD 的优势,包括提高代码质量、促进设计思考、减少调试时间和文档化。此外,文中分析了常见问题及解决方案,如测试覆盖率不足、测试代码过于复杂、忽视重构和测试依赖过多,并通过一个简单的计算器类的代码案例,展示了 TDD 的实际应用过程。
45 1