WMI技术介绍和应用——接收事件
时隔两三年,再次更新WMI系列博文。好在功能在三年前就已经实现了,现在只要补充些实例即可。
之前介绍的基本都是查询静态数据,而本文将要介绍非常有意思的事件接收功能。(转载请指明出于breaksoftware的csdn博客)
监控进程创建和死亡
首先提一个问题,如何监控系统创建进程?比如有些软件会监控竞品是否创建,如果创建了就通知用户“不安全”。有一种做法就是使用Windows API遍历系统的进程,而实际上我们可以通过WMI获取这样的信息。
SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'
我打开一个记事本,来看看程序的输出
这组信息,我们可能觉得有用的是进程名(Name)、进程启动命令(CommandLine)、创建时间(CreationDate)、进程所在路径(ExecutablePath),进程ID(ProcessId )、线程数(ThreadCount)等。
我们可以使用如下指令监控进程的死亡,其返回字段和上图中一致
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'
监控USB设备插拔
之前做PC版的手机助手,其中有一个功能就是监控USB设备插拔功能。如果有设备插入,则用ADB检测下是否有安卓设备插入。
SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_USBCOntrollerDevice
该指令可以监控设备的创建(插入)
其中有意义的信息是字段中包含的设备路径。
可以使用如下指令监控设备移除,返回字段和上图一样,我就不贴了。
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_USBCOntrollerDevice'
监控某个进程
我们可以通过指定进程名或者进程ID的形式,监控进程的改变
SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' And TargetInstance.Name = 'Notepad.exe'
SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' And TargetInstance.ProcessId = 13792
WMI的确是个强大的功能,如果一个进程内部集成一个WMI查询器,那么很多复杂的功能就会变成简单的WQL语句。当然它被使用最广的还是远程查询,我们可能在之后的章节中介绍这块的使用。
监控电量
随着平板和移动设备的兴起,电量将变量设备的一个重要性能,所以监控电量变化,可以衍生出很多产品。
SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Battery'
其中比较有用的字段是Availability和BatteryStatus
Availability | Meaning |
1 (0x1) | Other |
2 (0x2) | Unknown |
3 (0x3) | Running or Full Power |
4 (0x4) | Warning |
5 (0x5) | In Test |
6 (0x6) | Not Applicable |
7 (0x7) | Power Off |
8 (0x8) | Off Line |
9 (0x9) | Off Duty |
10 (0xA) | Degraded |
11 (0xB) | Not Installed |
12 (0xC) | Install Error |
13 (0xD) | Power Save - Unknown The device is known to be in a power save mode, but its exact status is unknown. |
14 (0xE) | Power Save - Low Power Mode The device is in a power save state but still functioning, and may exhibit degraded performance. |
15 (0xF) | Power Save - Standby The device is not functioning, but could be brought to full power quickly. |
16 (0x10) | Power Cycle |
17 (0x11) | Power Save - Warning The device is in a warning state, though also in a power save mode. |
BatteryStatus | Meaning |
1 | The battery is discharging. |
2 | The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging. |
3 | Fully Charged |
4 | Low |
5 | Critical |
6 | Charging |
7 | Charging and High |
8 | Charging and Low |
9 | Charging and Critical |
10 | Undefined |
11 | Partially Charged |
工程源码见《WMI技术介绍和应用——WMI概述》结尾。
相关文章:

WML标签速查手册
WML标签速查手册 结构相关标签语法及属性<wml><wml xml:lang"lang" > content</wml> WML元素的共有属性主要有3个,即id、class和xml:lang属性。WML的所有元素都有两个核心属性,即标识(id)和类(class)属性。它们主要用…
Python 三十大实践、建议和技巧
所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项,还有更多福利赠送作者 | Erik-Jan van Baaren译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】2020年,你又立了什么新的 Flag?新一年…

点击通知栏后打开Activity,并传参
为什么80%的码农都做不了架构师?>>> Reciver中intent new Intent(context, MessageDetailsaActivity_.class);intent.putExtra("freshMessageId", String.valueOf(push.getObid()));intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Inten…

WMI技术介绍和应用——执行方法
在之前的博文中,我们主要介绍了如何使用WMI查询信息和接收事件。本文将介绍WMI的另一种用法——执行方法。(转载请指明出于breaksoftware的csdn博客) 这块的内容在msdn中有详细的介绍,如果想看原版的可以参阅《Example: Calling a…

动态指定超链接参数的几种方法(Passing a JavaScript variable into href of )
情景:有些环境下我们需要根据页面中JavaScript变量的值来确定某个(某些)超链接的参数,如“http://www.bla.com/test.aspx?var1”中,究竟var1等于多少,要根据JavaScript变量来判定 方法一:很简单…

知乎「致知计划之科学季」颁奖,创作者分享80万元奖金
1月11日,「致知计划之科学季」颁奖典礼在北京798艺术中心举行,近500名创作者到场参加。 为了激励创作者,推动优质内容持续产出,知乎的「致知计划」从四个方面对创作者进行了扶持。一是流量扶持,让专业、优质的内容获得…

Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开。原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dll文件和exe文件放在同一个…

WMI技术介绍和应用——事件通知
在《WMI技术介绍和应用——WMI概述》中,我们使用了下图介绍WMI构架(转载请指明出于breaksoftware的csdn博客) 我们之前介绍的使用WMI查询系统、硬件等信息的功能,是通过查询WMI静态数据的空间实现的。这个功能的核心是在上图中2&a…

OpenWebSpider 安装使用
OpenWebSpider 是一个很好用的网络爬虫,也可以叫做“网络蜘蛛”. 安装: 1.使用Vs.net 2003 编译, 记得要copy libmysql.dll到工程里 2.配置文件openwebspider.conf 将已经启动了的 mysql数据库用户名,密码填写好 3.数据库建立 执行 sql_struc…
杂谈 | 当前知识蒸馏与迁移学习有哪些可用的开源工具?
所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项,还有更多福利赠送作者&编辑 | 言有三来源 | 有三AI(ID:yanyousan_ai)【导读】知识蒸馏与迁移学习不仅仅属于模型优化的重要技术之一,也是提升模型跨领域泛化能力的重要技…

对 Thinking in java 4th Edition I/O DirList.java的疑问
2019独角兽企业重金招聘Python工程师标准>>> 以下原文代码: //: io/DirList.java // Display a directory listing using regular expressions. // {Args: "D.*\.java"} import java.util.regex.*; import java.io.*; import java.util.*; pub…

WMI技术介绍和应用——Instance/Method Provider
在《WMI技术介绍和应用——事件通知》一文中,我们提到了提供者(Provider)这个概念。我们还是要引入WMI的结构图(转载请指明出于breaksoftware的csdn博客) 我们在1这层的Native C/C里可以看到若干Provider,这…

SSH 组建轻量级架构 附录 -- 遇到的问题和解答
action: nulljava.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn解决方法:加载 spring.jar 包 报 无法初始化at org.apache.struts.action.ActionServlet.initModulePlugIns(解决方法:删除 asm-2.2.3.jar springda…
TIOBE 1月编程语言排行榜:C语言再度「C 位」出道,Python惜败
整理 | 屠敏来源 | CSDN(ID:CSDNnews)【导读】在 2020 年初雪来临之际,TIOBE 官方在最新发布的 1 月编程语言榜单中为我们最终揭开了「 2019 年度编程语言」的神秘面纱,然意料之外情理之中,获此殊荣的并非是…

my项目的总结2015.8.26编
这已经是上上个星期的事了,现在回顾一下: 负责的模块是"my",更精准的说应该是my里面的个人信息管理 由于项目分域,模块已经分好了,涉及到的只是在现有的基础上解决分域后遗留的历史问题 上点图吧:…
WMI技术介绍和应用——Event Provider
在《WMI技术介绍和应用——Instance/Method Provider》一文中,我们介绍了Instance和Method Provider的编写方法。本文我们将介绍更有意思的“事件提供者”。在《WMI技术介绍和应用——事件通知》中,我们曾经提到事件是分为两种:intrinsic eve…

Windows server 2003 IP路由配置
1、静态路由:在静态路由中必须明确指出从源到目标所经过的路径2、默认路由:默认路由是一种特殊的静态路由,为那些在路由表中没有找到明确匹配的路由信息的数据包指定下一步跳地址。在Windows server 2003的计算机上配置默认网关时就为该计算机…
人工智能的下一个前沿:识别“零”和“无”
所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项,还有更多福利赠送作者 | Max Versace译者 | 夕颜出品 | AI科技大本营(ID:rgznai100)声明:本文为客座文章,仅是为作者的观点,不代表 IEEE Spectrum 或 …

File Operations In Java
2019独角兽企业重金招聘Python工程师标准>>> The “File” class in Java defines many useful methods, here is a program which demonstrates some of these methods. import java.io.*;public class streams {public static void main(String []args){File f1ne…
Cascade RPN,结构的艺术带来极致提升 | NeurIPS 2019
作者 | VincentLee来源 | 晓飞的算法工程笔记(ID: gh_084c810bc839)导读:论文提出Cascade RPN算法来提升RPN模块的性能,该算法重点解决了RPN在迭代时anchor和feature不对齐的问题,论文创新点足,效果也很惊艳…

IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]
IISPHPMySQLZend OptimizerGD库phpMyAdmin安装配置[完整修正实用版]IISPHPMySQLZend OptimizerGD库phpMyAdmin安装配置[完整修正实用版][补充]关于参照本贴配置这使用中使用的相关问题请参考关于WIN主机下配置PHP的若干问题解决方案总结这个帖子尽量自行解决,谢谢[url]http://b…

WMI技术介绍和应用——Event Consumer Provider
在《WMI技术介绍和应用——Event Provider》和《WMI技术介绍和应用——接收事件》中,我们展现了如何处理和事件相关的WMI知识。而《WMI技术介绍和应用——接收事件》一文则主要讲解了如何查询事件,这种查询是在我们进程存在时发生的,一旦我们…

shell练习四
2019独角兽企业重金招聘Python工程师标准>>> 模拟linnux登录shell #!/bin/bash echo -n "login:" read name echo -n "passwd:" read passwdif [ $name"aaa" -a passwd"aaa" ]; thenecho "the host and passwd is rig…

WMI技术介绍和应用——总结(完)
断断续续的,历经三年将WMI这个主题给写完了。记得最开始时接触该技术,是因为传统获取CPU序列号的方法总是出错。于是接触了这种已经很老的技术。本着打破砂锅问到底的想法,我决定稍微研究一下,结果越来越深。正好借着年前这点时间…
2020年,大火的Python和JavaScript是否会被取而代之?
作者 | Richard Kenneth Eng 译者 | 明明如月,编辑 | 郭芮 来源 | CSDN(ID:CSDNnews) Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一样跌下神坛…

WaveSwipeRefreshLayout
WaveSwipeRefreshLayout 介绍: 水滴效果的下拉刷新,效果非常不错。 http://itlanbao.com/code/20150815/10000/100423.html 运行效果: 相关代码 android Gallery 图片滚动 BalloonPerformerCountryRankDelightfulMenuDrawableFancyBackground…

Google Test(GTest)使用方法和源码解析——概况
GTest是很多开源工程的测试框架。虽然介绍它的博文非常多,但是我觉得可以深入到源码层来解析它的实现原理以及使用方法。这样我们不仅可以在开源工程中学习到实用知识,还能学习到一些思想和技巧。我觉得有时候思想和技巧是更重要的。(转载请指…
Reddit票选 | 2019年绝对不能错过的机器学习论文
来源 | reddit.com编辑 | 神经星星 神经小兮技术顾问 | 姜汉(openbayes.com)来源 | HyperAI超神经(ID:HyperAI)【导读】回顾 2019 年,人工智能领域时有大事发生,吸引着各界人士的关注。这一年,也…

ASP中的常用服务器检测源码
在写ASP网页时常用的检测代码:服务器现在时间: 引用<% now %>服务器CPU型号: 引用<%Request.ServerVariables("HTTP_UA_CPU")%>当前分辨率: 引用<% Request.ServerVariables("HTTP_UA_PIXELS")%>可显示颜色:[qoute]<%Request.ServerV…

选IDC房时,用脚本截取丢失包和rtt的值作比对
由于业务增长,需要选一个IDC房托管接入。网络质量要求比较高。在IDC给出测试机时,利用smokping来测试,是测出去的包。由于我们在各个地区都有接入机。再从这些接入机去测IDC网络质量,比对指标:丢失的包和rtt返回时延。…