能找到这篇博客的,相信都是有操作WMI需求的了。但是不知道如何快速验证、并集成到C#来操作WMI。我们分为3步:

##第一步:官网(或跟硬件开发WMI的人沟通你需要的接口和参数定义,如果是和硬件开发的人协定WMI接口,直接看第二步)查找你需要的WMI信息;

举例我需要获取显示器信息

我先biying搜索需要哪个WMI,再microsoft的docs下找到对应的WMI Requirements详细信息。

比如我知道了我需要WmiMonitorConnectionParams 来获取显示器信息。那么我去docs文档中搜索WmiMonitorConnectionParams ,地址如下:

WmiMonitorConnectionParams class - Win32 apps | Microsoft Docs

我们看下图的Namespace的Value是Root\wmi

我们就知道了,他书属于namespace命名空间的同时我们再网站的上面找到Properties,看到有一个一个InstanceName和一个VideoOutputTechnology,分别是string类型和uint32类型。

我们目前需要的信息就这么多,然后我们开始快速的再需要验证的机器上来验证接口返回信息,如果有问题。

##第二步:不需要写代码,快速验证接口是否可用。

(避免有因为个人代码导致的其他问题,占用大量沟时间,这种软硬件结合的沟通调试成本较高)

使用Win+R键打开允许输入wbemtest.exe按下回车,这是系统自带的WMI工具。

这个就是我们快速验证WMI的工具。

(1)点击连接。

(2)再弹出框的命名空间理输入我们刚才再网上查到的命名空间:Root\wmi。因为我们不是远程连接到其他电脑,所以连接保持默认。点击右上角连接。

(3)不一样的WMI消息查询方式是不一样的,比如有的是主动查询、有的是被动接受。主要差别是再选择查询和通知查询上。更为复杂的操作我们这里目前用不上,因为我们主要是为了验证WMI。

本次我们点击查询,因为是我们主动查询显示器信息,这不是一个事件,在弹出的查询对话框中输入:

SELECT InstanceName, VideoOutputTechnology FROM WmiMonitorConnectionParams

点击应用,出现下图就代表该接口能正常访问,如果提示错误,就代表输入有问题。或输入的WMI有问题,需要调试或跟对应的人员沟通,如果是硬件给你发送的WMI,要确认这台机器上硬件以调试好,能正常发送WMI消息。

达到这样的效果,WMI就相当于测试通拉,是不是快速验证WMI特别方便和快捷?能大量提高沟通效率。 接下来就是代码环节了。

##第三步:使用WMI工具生成代码:

WMI Code Creator是微软提供的一个WMI代码生成工具,用于生成对应的WMI访问代码。可以选择

从这个网站下载软件:

Download WMI Code Creator v1.0 from Official Microsoft Download Center

我们点击Code Language 切换到C# 。

(1)Namespace:选择root\WMI (-------注意大小写!!!-------)

(2)再Classes选择或输入我们查到的WmiMonitorConnectionParams 。

(3)再result下勾选我们要查询的内容,3个我们都要查。

(4)代码就会再右侧出现了。这样的话。就能正常的移植代码到我们的项目中拉。

(5)这个访问WMI的功能微软主要封装在System.Management的命名空间下。剩下的就可以自己扩展拉。有自己去访问得到值得WMI。还有接受事件得WMI。主要思路就是先查或定义自己要用得WMI接口然后查询或者协商定义参数。然后再这里封装代码就可以拉。

C#下通过wbemtest和WMI Code Cretor更加高效的访问WMI的更多相关文章

  1. Ubuntu下安装并配置VS Code编译C++

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069091.html Ubuntu下安装并配置VS Code编译C++ 安装 ...

  2. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机

    首先要清楚virtual box如何设置端口转发: 一篇文章: 如何使用VirtualBox进行端口转发 由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦.以前一直 ...

  3. centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法

    centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在c ...

  4. iis7下url重写后,已存在的html不能访问了(未能执行URL)的解决方法

    iis7下url重写后,原本存在的html不能访问了,未能执行URL(asp.net对真正的.html(但不符合重写规的)就不知道如何处理了),遇到类似情况的朋友可以参考下   当把.html的url ...

  5. tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决

    tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...

  6. Windows下构建ASP.NET Core+Code First+Docker

    背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...

  7. linux下C/C++IDE比较——Code::Blocks

    工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...

  8. Eclipse+Pydev环境下出现error “eclipse Non-UTF-8 code”

    文件首行加上”#coding=utf-8”   ,这一句话可控制代码中可输入中文字符

  9. Linux下更改目录及其下的子目录和文件的访问权限

    想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理. 例如: [root@localhost ~]# chmod 777 /home/user 注:仅把 ...

随机推荐

  1. Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

    写在前面   Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...

  2. GO学习-(25) Go操作Redis实战

    Go操作Redis实战   安装Redis客户端 Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作.使用以下命令下载并安装: go ...

  3. 使用vue-cli 来创建vue项目

    前置条件 需要安装node环境 安装vue\cli工具 vue\cli官网 传送门 vue-cli 安装node.js nodejs中文网 点击之后会发现这个界面 可以点击下载或者选择其他版本的包,尽 ...

  4. 2019个嵌入式市场研究,持续的C/C++优势

    2019个嵌入式市场研究,持续的C/C++优势 2019 Embedded Markets Study reflects emerging technologies, continued C/C++ ...

  5. 那些年,我们一起做过的KNX智能化控制经典案例!

    那些年,我们一起做过的KNX经典案例! 光阴之箭已经穿越年轮,抵达2021 GVS在2008年加入KNX国际协会,成为中国首批引进KNX标准的企业,此后,还率先研发出基于KNX的核心协议栈,定标准,做 ...

  6. 1738. 找出第 K 大的异或坐标值

    2021-05-19 LeetCode每日一题 链接:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/ 标 ...

  7. 【C++】Vector求最大值最小值

    最大值: int max = *max_element(v.begin(),v.end()); 最小值: int min = *min_element(v.begin(),v.end());

  8. 使用 Docker 部署 Node 应用

    容器将应用与环境打包整合,解决了应用外部依赖的痛点,打包后通过窗口可方便地部署到任意环境,用过就知道很香. 创建示例应用 以 NestJS 为例,先创建一个示例应用. $ npm i -g @nest ...

  9. Qt中的多线程与线程池浅析+实例

    1. Qt中的多线程与线程池 今天学习了Qt中的多线程和线程池,特写这篇博客来记录一下 2. 多线程 2.1 线程类 QThread Qt 中提供了一个线程类,通过这个类就可以创建子线程了,Qt 中一 ...

  10. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...