C#程序中获取电脑硬件配置信息的一种方法
本文介绍获取cpu信息和内存信息的方法,根据本文所举例的代码可以举一反三获取更多信息。
获取cpu名称的方法:
public string GetCpuInfo()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_Processor");
foreach (ManagementObject obj2 in searcher.Get())
{
try
{
return (obj2.GetPropertyValue("Name").ToString());
}
catch
{
continue;
}
}
return "未知";
}
obj2的属性名为Name的属性值输出的是cpu的名称,如intel的cpu就会返回
之类的字符串。当然也可以获取其他信息,但是我们不知道属性名,又很难查到此类资料,怎么办呢?很简单,可以遍历obj的所有属性,将他们的名称打印出来即可。
获取内存信息的方法:
public string GetMemoryInfo()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(); //用于查询一些如系统信息的管理对象
searcher.Query = new SelectQuery("Win32_PhysicalMemory ", "", new string[] { "Capacity" });//设置查询条件
ManagementObjectCollection collection = searcher.Get(); //获取内存容量
ManagementObjectCollection.ManagementObjectEnumerator em = collection.GetEnumerator(); long capacity = ;
while (em.MoveNext())
{
ManagementBaseObject baseObj = em.Current;
if (baseObj.Properties["Capacity"].Value != null)
{
try
{
capacity += (long.Parse(baseObj.Properties["Capacity"].Value.ToString())) / / / ;
}
catch
{
capacity = ;
}
}
} searcher.Query = new SelectQuery("Win32_PhysicalMemory ", "", new string[] { "Speed" });//设置查询条件
collection = searcher.Get(); //获取内存速度(即频率)
em = collection.GetEnumerator(); string speed = "";
while (em.MoveNext())
{
ManagementBaseObject baseObj = em.Current;
if (baseObj.Properties["Speed"].Value != null)
{
try
{
speed = baseObj.Properties["Speed"].Value.ToString();
}
catch
{
speed = "";
}
}
}
string mi = "";
if (capacity > && speed.Length > )
{
mi = capacity.ToString() + " GB, " + speed + " MHz";
}
return mi;
}
内存相对复杂一点,因为可能会有多条内存。明眼人看到获取cpu信息的代码时应该能看出,获取这些硬件配置信息,其实就是查询系统中保存这些信息的数据库。查询cpu时会返回实际线程数个cpu,如四核八线程就会查询到8条记录,由于多数pc只有一个cpu,所以只要找到哪一条记录中含有cpu的名称数据,就可以返回值。对于内存来说,读到的每一条记录只是一条内存的数据,要得知内存总容量就要将每一条的容量加起来。同样,内存的信息不只有容量,其频率信息如何获取也在上述代码中呈现。
如果读者是通过搜索引擎找到这篇文章,想必是急忙复制了代码去检查实现结果了。这时候你们就会遇到一个问题,代码中很多类名下面有红色波浪线,也无法快速添加如下引用:
using System.Management;
下面讲下添加方法:

1.上面的截图来自于“解决方案资源管理器”,默认是在代码编辑器右边,如果没有出现,那么请点击“视图”->”解决方案资源管理器“,打开它。
2.在项目的子项中找到引用,右键再点击添加引用。
3.在弹出的对话框中找到并勾选System.Management.dll
4.确认后再次尝试添加using,好了,这次没有红色波浪线了吧。
C#程序中获取电脑硬件配置信息的一种方法的更多相关文章
- C/C++通过WMI和系统API函数获取获取系统硬件配置信息
转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...
- 获取用户当前位置信息的两种方法——H5、微信
在之前的 调用百度地图API的总结 中获取当前位置信息我用的是 H5 ,其实微信也提供了获取用户地理位置的方法,现将这两种方法都贴出来,看情况选择使用. 一.H5 获取当前地理位置得到经纬度 // H ...
- PHP程序中删除字符串最后一个字符的三种方法
常见的语法格式: foreach ($arr as $key => $value) {$arr_str = $arr['x_id'] . ',' . $arr_str;} 假设字符数组 $arr ...
- linux 中获取进程和kill进程的几种方法
ps: ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. 注意:ps是显示瞬间进程的状态, ...
- SpringBoot配置分析、获取到SpringBoot配置文件信息以及几种获取配置文件信息的方式
Spring入门篇:https://www.cnblogs.com/biehongli/p/10170241.html SpringBoot的默认的配置文件application.properties ...
- java程序中获取kerberos登陆hadoop
本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- System.getProperty()获取系统的配置信息
原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...
- System.getProperty()获取系统的配置信息(系统变量)
原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...
随机推荐
- POJ -- 2955
Brackets Description We give the following inductive definition of a “regular brackets” sequence: th ...
- EF多表查询方式
5, 连接 可以的连接有Join 和 GroupJoin 方法.GroupJoin组联接等效于左外部联接,它返回第一个(左侧)数据源的每个元素(即使其他数据源中没有关联元素). using (var ...
- MySQL 数据库 引擎
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引 擎:ISAM.MYISAM和HEAP.另外两种类型I ...
- GCC内联汇编入门
原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误. 中文版说明 由于译者水平有限,故译文出错之处,还请见谅.C语言的关键字不译,一些单词或词组( ...
- show drop down menu within/from action bar
show drop down menu within/from action bar */--> pre { background-color: #2f4f4f;line-height: 1.6 ...
- Delphi的四舍五入函数
一.四舍五入法 四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种. 所谓算术舍入法,就是我们通常意义上的四舍五入法.其规则是:当舍去位的数值大于等于5时,在舍去该 ...
- 【解决】小米M1刷机教程(卡刷)
1.下载合适的rom 下载地址为:http://rom.xiaomi.cn/ 选择合适的机型.硬件版本.固件类.软件版本后,点击“搜索”后,下载合适版本即可. 2.备份 个人手机主要需要备份的项目如下 ...
- Python中的引用的使用注意
关于Python中的引用的一些使用注意 在python中,在创建一个对象并给它赋予一个变量时,这个赋予的变量仅仅是一个引用它所代表的对象.也就是说新创建的对象只是指向计算机中储存那个对象的内存. 比如 ...
- oracle删除当前用户下所有表
1.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建该用户.--创建管理员用户create u ...
- phpnow下mysqli加载不了的问题
用了phpnow也有蛮长一段时间了.一直感觉还不错,不过就是差点把手动配置apache/php/mysql环境的方法都给忘了. 这几天一直都在找crm系统,可惜没有几个满意的.今天逛上了weberp这 ...