WMI 全称为:Microsoft®Windows®Management Instrumentation (WMI)
按微软的介绍大致如下:
    WMI 是 Microsoft 主要的针对 Windows 的管理支持技术。在 WMI 之前,所有的 Windows 图形化管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。这种情况使 Windows 系统管理员无法通过一种简便的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。通过提供一致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!

我已经不记得什么时候就知道的这个WMI,但直到今天才认真的学学;可能是采用SQL的语法吸引了我吧,至少用它来做到“windows 优化大师”所获取的系统信息是很容易的。晚上一直在弄这个小程序,因为WMI设计到windows的方方面面,所以我想做一个想sqlserver带的查询分析器的工具,专门用于调试WMI的查询;用了后才发现使用起来确实方便,.net提供一个System.Management.ManagementObjectSearcher类,用它很简单的就可操作WMI;如下是简单实例:

            ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem");
            sysInfoListTest.Items.Clear();
            sysInfoListTest.Items.Add("Computer System Information");
            foreach(ManagementObject info in search.Get())
            {
                sysInfoListTest.Items.Add("Manufacturer: " + info["manufacturer"].ToString());
                sysInfoListTest.Items.Add("Model: " + info["model"].ToString());
                sysInfoListTest.Items.Add("System Type: " + info["systemtype"].ToString());
                sysInfoListTest.Items.Add("Total Physical Memory: " + info["totalphysicalmemory"].ToString());
            }

这个是访问计算机系统的一些基础信息,比如可以知道系统的“物理内存”大小;

我在程序里实现了一个内存表,专门用于dataGrid来显示数据,通过访问 ManagementObject的属性信息,把每个类的名称作为列显示出来;下面的代码就是实现的核心:

            foreach(ManagementObject mo in mos.Get())
            {
                DataRow dr = dt.NewRow();

                PropertyDataCollection.PropertyDataEnumerator oEnum;
                //显示系统类
                //获取属性,系统类
                oEnum = (mo.Properties.GetEnumerator() as PropertyDataCollection.PropertyDataEnumerator);
                while(oEnum.MoveNext())
                {
                    PropertyData prop = (PropertyData)oEnum.Current;
                    if(dt.Columns.IndexOf(prop.Name)==-1)
                    {
                        dt.Columns.Add(prop.Name);
                        Console.Out.WriteLine(prop.Name);
                        dt.Columns[dt.Columns.Count-1].DefaultValue = "";
                    }
                    try
                    {
                        //该类未实例化,所以需要异常结构,表示为null
                        dr[prop.Name] = mo[prop.Name].ToString();
                        Console.Out.WriteLine(prop.Name + " row");
                    }
                    catch
                    {
                        Console.Out.WriteLine(prop.Name + " row error");
                    }
                }
            }

可以看到这句代码 :
mo.Properties.GetEnumerator() as PropertyDataCollection.PropertyDataEnumerator
这里的Properties所访问的是非系统属性集合,既然是调试工具那么就得把SystemProperties也列出来,实现的过程同上。

下面的帖图是运行界面:


PS:我刻意缩小了,因为每次帖的图片过大了

下次再实现读出所有的可访问的类;

点这里下载工程源码,带执行文件

制作了一个WMI 查询分析工具相关推荐

  1. python实现火车票查询工具_Python 实现一个火车票查询的工具

    原标题:Python 实现一个火车票查询的工具 作者 sexycoder 本文转载自简书,转载需授权 使用 python 实现一个查询火车票的小工具 主要功能: 输入出发车站,到达车站,时间,然后返回 ...

  2. mysql慢查询分析工具和分析方法

    1.mysql慢查询分析工具 1.参考文档: http://www.ttlsa.com/mysql/analyse-slow-query-log-using-anemometer/ http://is ...

  3. 分享一个IIS日志分析工具-LogParse

    分享一个IIS日志分析工具 LogParser工具的使用 1)先安装LogParser 2.2.msi ,是一个命令行工具,功能强大,但使用不便: 下载地址:http://www.microsoft. ...

  4. 【性能优化】MySQL常用慢查询分析工具

    常用慢查询分析工具 引言 在日常的业务开发中 MySQL 出现慢查询是很常见的 大部分情况下会分为两种情况 1.业务增长太快 2.要么就是SQL 写的太xx了 所以 对慢查询 SQL 进行分析和优化很 ...

  5. python火车票查询工具tkinter_Python 实现一个火车票查询的工具

    原标题:Python 实现一个火车票查询的工具 主要功能: 输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息 支持输入附加选项查询不同的火车的类型,比如高铁,动车. #查询上海到北京2 ...

  6. mysql 查询分析工具下载_SQL分析工具下载-SQL查询工具(DB Solo)下载v5.2.5官方版-西西软件下载...

    DB Solo是一款完美的数据库查询分析工具.软件优秀跨平台SQL查询功能,支持所有主要DBMS产品:主要用于POJO的J2EE代码生成器,EJB 3.0批注,使用DAO  模式的JDBC持久层,JU ...

  7. 用Python做了一个法律查询小工具,非常好用

    用Python做了一个法律查询小工具,非常好用 效果展示 准备工作 主要代码 哈喽兄弟,今天给大家分享一个Python tkinter制作法律查询小工具. 光爬虫大家也只能自己用用,就算打包了exe, ...

  8. mysql的查询分析工具下载_万能数据库查询分析器(ODBC数据库查询分析工具)V7.03 最新版...

    万能数据库查询分析器(ODBC数据库查询分析工具)是一款功能强大,性能良好的数据库查询辅助工具,对开发人员来说是一款省时省力的数据库分析工具. 功能特点: 可以通过它查询ODBC数据源(包括世面上所有 ...

  9. 制作了一个在线查询席位的小程序

    11-6号制作了一个在线查询席位的小程序 声明:本人小白一个纯分享,写出来巩固思路,不足之处,大佬多指教,谢谢! 用的是webapi使用 大致的思路是先webapi写一个查询数据库的程序, 再sqli ...

最新文章

  1. c语言链表如何做成环,在C语言中单向链表环测试并返回环起始节点的实现方法...
  2. 关于manacher
  3. gethostbyname函数
  4. python乒乓球比赛规则介绍_乒乓球比赛规则及活动方案
  5. 聚类(中)层次聚类 基于密度的聚类算法
  6. vs mono linux,[.NET][C#.NET]走跳在Linux的人生(八).NET Core与Mono执行
  7. shell脚本 如何切换当前目录
  8. 云原生开发环境初探 | CSDN 博文精选
  9. 【笔试/面试】排列组合与概率计算(二)
  10. iqooneo系统要不要更新_手机系统要不要升级?别纠结,1分钟看完你就知道
  11. ddgr:一个从终端搜索 DuckDuckGo 的命令行工具
  12. 从上到下的系统架构分析方法 - Intel PMU
  13. 2023年电工杯B题详解
  14. Swift使用代码进行约束
  15. MyBatis02:CRUD操作和配置解析
  16. 和韩雪冬学到的网页设计点滴
  17. [创业-6]:创业中,好领导者需要做的最重要的9件事
  18. php应用于哪些地方,php的应用范围
  19. 用最长情的告白陪伴技术人的成长
  20. 实时操作系统与分时操作系统的区别

热门文章

  1. cs寄存器 x86 特权模式_Windows操作系统管理进程和线程:内核模式和用户模式
  2. 量子计算机概念谁提出来,目前的量子计算机从根本上来说是一个伪概念
  3. java提交表单后页面不刷新_表单已经提交,但是点击后退,显示网页过期,刷新后怎样避免重复提交(急!!谢谢!)...
  4. Java Spring AspectJ
  5. Pandas Timedelta对象
  6. java万年历表怎么输出6_用Java编程输出万年历的功能实现
  7. Exchange Server 2016 独立部署/共存部署 (一)—— 前期准备
  8. 一张图看懂SOA与微服务
  9. Spring Boot学习总结(11)——SpringBoot的Starter依赖包及作用
  10. Mysql学习总结(36)——Mysql查询优化