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 ...
随机推荐
- PCB的技巧
(1)首先元件的移动,如下图中,向让D1的2引脚和R49的2引脚齐平,但是移动的距离每次都超过,不能平齐 修改元件最小移动距离即可,如下图,其中有很多可以改动的地方,但是需要改的是Component ...
- 使用Notify 和 wait ,使用Linklist实现生产者消费者问题
ref:http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 注释很清楚的, import java.util.Link ...
- [SAM4N学习笔记]SAM4N工程模板搭建
一.需要安装的软件: 因为笔者是使用MDK-ARM开发的版本是4.72,所以需要安装这个工具,具体在哪里下载自行放狗或问度娘.除了这个重要工具以为,还需要安装Atmel官方的Atmel Studio, ...
- Linux达人养成计划1(第2章 Linux系统安装)
2.3 系统分区之分区与格式化 1. 分区类型 主分区:最多只能有四个. 扩展分区: 最多只能有1个. 主分区加扩展分区最多有4个. 不能写入数据,只能包含逻辑分区. 逻辑分区: 2. 格式化(高级格 ...
- hdoj 5494 Card Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5494 题意:首先一个数t代表测试样例组数 然后两个数n,m 代表数列中有n个数 从中取m个数 ...
- Http 缓存
常用Http缓存页asp.net 页面上加上 <%@ OutputCache Duration="10" VaryByParam="None" %> ...
- LeetCode——Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- [React] React Fundamentals: Precompile JSX
The JSX Transformer library is not recommended for production use. Instead, you'll probably want to ...
- Day01 - Python 基础介绍
1 Python 简介 1.1 Python 的由来 Python的创始人:吉多·范罗苏姆(Guido van Rossum) 1989年,吉多·范罗苏姆为了在阿姆斯特丹打发圣诞节假期时间,开发的一个 ...
- MySQL强化
大纲: 数据约束 数据库设计(表设计) 关联查询(多表查询) 存储过程 触发器 mysql权限问题 1 数据约束 1.1 什么是数据约束 对用户操作表的数据进行约束. 1.2 约束种类 1.2.1 默 ...