本文介绍获取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#程序中获取电脑硬件配置信息的一种方法的更多相关文章

  1. C/C++通过WMI和系统API函数获取获取系统硬件配置信息

    转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...

  2. 获取用户当前位置信息的两种方法——H5、微信

    在之前的 调用百度地图API的总结 中获取当前位置信息我用的是 H5 ,其实微信也提供了获取用户地理位置的方法,现将这两种方法都贴出来,看情况选择使用. 一.H5 获取当前地理位置得到经纬度 // H ...

  3. PHP程序中删除字符串最后一个字符的三种方法

    常见的语法格式: foreach ($arr as $key => $value) {$arr_str = $arr['x_id'] . ',' . $arr_str;} 假设字符数组 $arr ...

  4. linux 中获取进程和kill进程的几种方法

    ps: ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. 注意:ps是显示瞬间进程的状态, ...

  5. SpringBoot配置分析、获取到SpringBoot配置文件信息以及几种获取配置文件信息的方式

    Spring入门篇:https://www.cnblogs.com/biehongli/p/10170241.html SpringBoot的默认的配置文件application.properties ...

  6. java程序中获取kerberos登陆hadoop

    本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...

  7. linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...

  8. System.getProperty()获取系统的配置信息

    原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...

  9. System.getProperty()获取系统的配置信息(系统变量)

    原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...

随机推荐

  1. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf5

    文本的定位 水平与垂直定位:当使用strokeText()和fillText()绘制文本时,指定了所绘文本的X与Y坐标,还有textAlign与textBaseline两个属性 textAlign:s ...

  2. ReadingNotes@02-12-2013

    ReadingNotes@02-12-2013 */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Cons ...

  3. DrawerLayout和toolbar的使用

    onPostCreate()是Activity完全启动后的调用:在完全启动后的回调设置toolbar 然后在使用 AppCompatActivity 时style要设置为何appCompat相关的样式 ...

  4. sqlserver优化查询

    sql语句的优化分析   开门见山,问题所在 sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况. 网速不给力,不稳定. 服务器内存不够,或者SQL 被分配的内存不够. sql语 ...

  5. WPF ArrangeOverride与MeasureOverride

    1.MeasureOverride  是FrameworkElement.MeasureOverride 方法 当重写在派生类中,单位是对于子元素所需要布局的大小并确定FrameworkElement ...

  6. jetty服务器

    1,http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin 2,http://wiki.eclipse.org/Jetty#Getting_S ...

  7. Linux后门入侵检测工具,附bash漏洞解决方法[转载]

    转自:http://blog.jobbole.com/77663/ 官网 ClamAV杀毒软件介绍 ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是 ...

  8. Flume 入门--几种不同的Sources

    1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个顶级项目. flum ...

  9. java代理

    首先,java中为什么要提出代理的设计模式呢?代理模式的作用是:为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个客户不想或者不能直接引用还有一个对象,而代理对象能够在client和目标 ...

  10. im消息丢失插件

    https://github.com/laughin/mocamsg mocamsg Moca message interceptor Openfire网络不好的情况下经常丢消息,一般情况都是服务器端 ...