本文介绍获取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. VS2010引用项目dll,编译时报错

    截图出处:http://www.cnblogs.com/wuhuisheng/archive/2012/02/13/2349754.html

  2. C#面向对象的三大特征

    一,封装:我们可以把世界上任何一个东西都看作为一个对象,那么我们这里以人为例,一个人就肯定是一个对象了.那么封装是什么呢?封装就是这个人要完成一件事情,他所需要的任何工具都带在了自己的身上,所需要的技 ...

  3. lfs遇到的一些问题--准备阶段

    本机宿主系统archlinux,lfs SVN-20130711,参考文档 1.在离开或重新进入当前工作环境 (比如 su 成为 root 或者其他用户) 时不要忘记检查 $LFS 是否设置好. ec ...

  4. uvaLA4255 Guess BFS+拓扑排序

    算法指南白书 思路:“连续和转化成前缀和之差” #include <stdio.h> #include <string.h> #include <iostream> ...

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

    事件处理: HTML5应用程序是以事件来驱动的,可以在canvas中增加一个事件监听器,当事件发生时,浏览器就会调用这个监听器 //方法一canvas.onmousedown=function(e){ ...

  6. Java学习感受

    一个暑假,两本书,让我了解到了Java的神奇美妙,这个工具的年龄跟我一样大,然而日久弥新,随着电脑技术科学家,工程师的开发,Java的功能越来越完善.学习的时间不长,但我比较着学习,把Java跟C.C ...

  7. Java StringTokenizer Example

    In Java, you can use StringTokennizer class to split a String into different tokenas by defined deli ...

  8. 事物复制中大项目(Large Article)出问题如何快速修复

    事物日志中如果大的发布项目(Article)出问题了,并且影响了系统的使用,如何快速的解决? 一般的做法是重新用快照或者备份初始化,但是如果出问题的表非常大(上亿的记录,几十GB的数据),使用初始化是 ...

  9. HttpURLConnection的流式输出的缺陷和解决方法

    转自:http://www.mzone.cc/article/198.html 最近在用applet写文件上传控件的时候发现使用URLConnection来对服务器进行流式输出时的一些问题.我们通常要 ...

  10. Android学习(一)

    #常见布局 ###线性布局 有一个布局方向,水平或者竖直 在竖直布局下,左对齐.右对齐,水平居中生效 在水平布局下,顶部对齐.底部对齐.竖直居中生效 权重:按比例分配屏幕的剩余宽度或者高度 ###相对 ...