C#下通过wbemtest和WMI Code Cretor更加高效的访问WMI
能找到这篇博客的,相信都是有操作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的更多相关文章
- Ubuntu下安装并配置VS Code编译C++
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069091.html Ubuntu下安装并配置VS Code编译C++ 安装 ...
- windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机
首先要清楚virtual box如何设置端口转发: 一篇文章: 如何使用VirtualBox进行端口转发 由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦.以前一直 ...
- centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法
centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在c ...
- iis7下url重写后,已存在的html不能访问了(未能执行URL)的解决方法
iis7下url重写后,原本存在的html不能访问了,未能执行URL(asp.net对真正的.html(但不符合重写规的)就不知道如何处理了),遇到类似情况的朋友可以参考下 当把.html的url ...
- tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决
tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...
- Windows下构建ASP.NET Core+Code First+Docker
背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...
- linux下C/C++IDE比较——Code::Blocks
工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...
- Eclipse+Pydev环境下出现error “eclipse Non-UTF-8 code”
文件首行加上”#coding=utf-8” ,这一句话可控制代码中可输入中文字符
- Linux下更改目录及其下的子目录和文件的访问权限
想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理. 例如: [root@localhost ~]# chmod 777 /home/user 注:仅把 ...
随机推荐
- nginx 配置 conf stream
nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡.默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream参数 ...
- 上传靶机实战之upload-labs解题
前言 我们知道对靶机的渗透可以提高自己对知识的掌握能力,这篇文章就对上传靶机upload-labs做一个全面的思路分析,一共21个关卡.让我们开始吧,之前也写过关于上传的专题,分别为浅谈文件上传漏洞( ...
- 通过Maven打jar包&运行
运行命令:java -jar [包名] https://www.cnblogs.com/jinjiyese153/p/9374015.html
- 【pytest】使用parametrize将参数化变量传递到fixture
分享一个关于在pytest中,如何将测试用例文件中的变量传递到fixture函数. 一.交代应用场景 目前组内的项目,在根目录下是有一个conftest.py文件的,这里有个生成api token的f ...
- 插件 ExcelWrite 导出Excel格式数据/获取图层
使用ExcelWrite 插件可以导出Excel格式的数据: ExcelFile端口接 文件数据路径 最后面的是文件名,不用写格式 如果存储树形数据,需要 勾选 List To Row 选项: 附: ...
- Camera Calibration 相机标定
Camera Calibration 相机标定 一.相机标定方法 在opencv中提供了一组函数用于实现相机的标定,标定返回的值包括:相机内参矩阵(fx fy xc yc).相机外参矩阵(R t)以及 ...
- 3D点云几何拟合
3D点云几何拟合 Supervised Fitting of Geometric Primitives to 3D Point Clouds 论文地址: http://openaccess.thecv ...
- MinkowskiEngine基准测试
MinkowskiEngine基准测试 介绍卷积层和小型U网络的前馈和后馈通过时间.可以将具有相同张量步幅,步幅和内核偏移的内核映射重新用于其他层,可以在大型nueral网络中使用的所有层上,分摊此页 ...
- 计算机网络-ip分类
本网络--网络号全是0(0000 0000)的IP地址是保留地址,意思是"本网络". 环回地址--网络号是127(0111 1111)的IP地址也是保留地址,作为本地环回软件测试. ...
- Task04:集合运算
4.1 表的加减法 4.1.1 什么是集合运算 集合在数学领域表示"各种各样的事物的总和", 在数据库领域表示记录的集合. 具体来说,表.视图和查询的执行结果都是记录的集合, 其中 ...