PerformanceCounter的介绍就不多说了,MSDN上介绍的很详细: https://msdn.microsoft.com/zh-cn/library/system.diagnostics.performancecounter(v=vs.110).aspx

 //对PerformanceCounter进行封装
public class PerformanceCounterCollect
{
private PerformanceCounter counter = null;
public PerformanceCounterCollect(string categoryName, string counterName, string instanceName)
{
counter = new PerformanceCounter(categoryName, counterName, instanceName, ".");
try
{
Collect();//开启采集
System.Threading.Thread.Sleep();
}
catch { }
}
public float Collect()
{
try
{
return counter.NextValue();
}
catch (Exception ex)
{
return -;
}
}
}

收集CpuUtilization:new PerformanceCounterCollect("Processor", "% Processor Time", "_Total")

收集DiskReadSpeed: new PerformanceCounterCollect("PhysicalDisk", "Disk Read Bytes/sec", "_Total")

收集DiskWriteSpeed:new PerformanceCounterCollect("PhysicalDisk", "Disk Write Bytes/sec", "_Total")

收集MemoryAvailable:new PerformanceCounterCollect("Memory", "Available MBytes", "")

收集NetworkSendSpeed这个有一些繁琐,因为机器机器多网卡是很普遍的,要获取Enable的网卡,代码如下:

  var ethernetInstance = GetEthernetInstance();

   public static string GetEthernetInstance()
{
var result = new PerformanceCounterCategory("Network Interface");
var instanceNames = result.GetInstanceNames();
var ethernetDescriptions = GetEthernetDescriptions();
foreach (var instance in instanceNames)
{
if (ethernetDescriptions.Contains(instance))
{
return instance;
}
}
return "";
//throw new Exception("Not found enable ethernet instance.");
} public static List<string> GetEthernetDescriptions()
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
List<string> descriptions = new List<string>();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"])
{
descriptions.Add(DesConvertInstance(mo["Description"].ToString()));
}
}
return descriptions;
}
static string DesConvertInstance(string description)
{
foreach (var ch in changeChars)
{
description = description.Replace(ch.Key, ch.Value);
}
return description;
}
static Dictionary<string, string> changeChars = new Dictionary<string, string>()
{
{"(", "[" },
{")", "]" },
{"#", "_" },
};

收集NetworkSendSpeed:new PerformanceCounterCollect("Network Interface", "Bytes Sent/sec", ethernetInstance)

收集NetworkReceivedSpeed: new PerformanceCounterCollect("Network Interface", "Bytes Received/sec", ethernetInstance)

WMI还有很多,大家有兴趣可以查看以下网址:

https://msdn.microsoft.com/en-us/library/dn792179(v=vs.85).aspx

通过WMI获取机器信息的更多相关文章

  1. WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

    原文:WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法 今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取 某部分的 ...

  2. python获取机器信息脚本(网上寻找的)

    获取机器信息(待测试) # -*- coding: UTF-8 -*- import psutil import json import os import socket import struct ...

  3. 主机性能监控之wmi 获取磁盘信息

    标 题: 主机性能监控之wmi 获取磁盘信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990541.html 欢迎转帖 请保持文本完整并注明出处 仅 ...

  4. 主机性能监控之wmi 获取进程信息

    标 题: 主机性能监控之wmi 获取进程信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990499.html 欢迎转帖 请保持文本完整并注明出处 仅 ...

  5. c# WMI获取机器硬件信息(硬盘,cpu,内存等)

    using System; using System.Collections.Generic; using System.Globalization; using System.Management; ...

  6. .NET获取机器信息

    /// <summary> /// using System.Web; /// using System.Management; /// </summary> public s ...

  7. C#通过WMI获取硬件信息

    有时候需要得到硬件信息绑定用户登录 代码如下: private string GetProcessSerialNumber() { try { ManagementObjectCollection P ...

  8. C++ WMI获取系统硬件信息(CPU/DISK/NetWork etc)

    官网找到一个例子,根据例子修改下可以获取很多信息 #define _WIN32_DCOM #include <iostream> using namespace std; #include ...

  9. 浅谈如何获取机器的memory和CPU信息

    最近做了一个项目,需要获取机器的CPU和memory的使用情况.花了一些时间网上搜索了一下,自己也做了些测试.总结下来,基本上2种方式:一种是用WMI(2种),另一种是用Performance cou ...

随机推荐

  1. CXF之"@XmlType.name 和 @XmlType.namespace 为类分配不同的名称"错误

    CXF 的 wsdl2java.bat 生产的代码,拷贝到目录,进行调研 web service接口时,抛出错误: Exception in thread "main" javax ...

  2. myeclipse中git的使用

    1.右键项目,team-->commit,勾选修改了的文件,点击commit(将更新提交到本地仓库)2.右键项目,team-->pull,合并本地仓库和远程服务器仓库,pull后有一些文件 ...

  3. dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全

    文章来源:小灰博客| 时间:2013-10-30 13:40:21| 作者:Leo | 1 条评论 文章分类:IT技术分享.PHP     标签: dedecms 今天偶尔发现给一篇dede下的长文章 ...

  4. ico图标在谷歌浏览器中如何显示?

    http://www.zen-cart.cn/forum/topic266117.html 版主: shaning 发表回复 2 篇帖子 • 分页: 1 / 1  ico图标在谷歌浏览器中如何显示? ...

  5. 常用SQL笔记总结

    DDL(data definition language)创建和管理表 1.创建表 1.直接创建 例如: create table emp( name varchar(20), salary int ...

  6. vue不是内部或外部命令,配置一个Path系统变量就可以解决

    作为一个vue小白,最近为vue安装真是操碎了心.无论怎么查找网上的教程,还是解决不了"vue不是内部或外部的命令"诸如此类的问题.好在功夫不负有心人,终于在多次的试验下,成功解决 ...

  7. 苹果内购服务器验证之receipt返回多组in_app思考

    最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...

  8. 2017-06-25(常用快捷键 history 用户及用户组)

    常用快捷键 ctrl+l 清屏 (与clear命令功能相似) ctrl+c 强制终止当前命令 crtl+a 光标移到命令行首 crtl+e 光标移到命令行尾 ctrl+u 从光标所在位置删除至行首 c ...

  9. RocketMQ-消费重试机制

    介绍: RocketMQ的消息重试及时分为两种,一种是Producer端重试,一种是Consume端重试. 1.Producer端重试 : 1.1消息发没发成功,默认情况下是3次重试. 2.Consu ...

  10. Redis跟Spring整合,sentinel模式

    普通模式整合 一.在pom.xml中引入redis的依赖 <dependency> <groupId>org.springframework.data</groupId& ...