C#使用WMI實現(xiàn)監(jiān)聽進程的啟動和關(guān)閉
寫在前面
Windows Management Instrumentation(WMI)是用于管理基于 Windows 操作系統(tǒng)的數(shù)據(jù)和操作的基礎(chǔ)結(jié)構(gòu)。具體的API可以查看 WMI編程手冊。
WMIC 是WMI的命令行管理工具,使用 WMIC,不但可以管理本地計算機,還可以管理同一Windows域內(nèi)的所有遠程計算機(需要必要的權(quán)限),而被管理的遠程計算機可以不預(yù)先安裝WMIC,只需要支持WMI即可。WMIC 通過 WMIC.exe 實現(xiàn)了分析、解釋并執(zhí)行來自命令行的參數(shù)別名(Alias)的引擎,這個文件通常位于 "C:\Windows\System32\wbem"文件夾中(支持Windows XP和Windows2003及以后的系統(tǒng))。
命令行示例:wmic cpu get name 查看CPU信息
在.net core中使用需要從NuGet安裝 System.Management 包,而在.net framework直接引用即可。
代碼實現(xiàn)
using System.Management; public class Program { public static void Main(string[] args) { //創(chuàng)建WQL事件查詢,監(jiān)視進程開啟 var qCreate = new WqlEventQuery("__InstanceCreationEvent", TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'"); //創(chuàng)建WQL事件查詢,監(jiān)視進程關(guān)閉 var qDelete = new WqlEventQuery("__InstanceDeletionEvent", TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'"); // 指定名稱的查詢語句 // "TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'Notepad.exe'" //創(chuàng)建事件查詢的偵聽器(ManagementEventWatcher) var wCreate = new ManagementEventWatcher(qCreate); var wDelete = new ManagementEventWatcher(qDelete); // 注冊啟動事件 wCreate.EventArrived += (sender, e) => { Console.WriteLine("開啟進程:{0}", GetInfo(e.NewEvent)); }; // 注冊關(guān)閉事件 wDelete.EventArrived += (sender, e) => { Console.WriteLine("關(guān)閉進程:{0}", GetInfo(e.NewEvent)); }; //開始異步偵聽 wCreate.Start(); wDelete.Start(); Console.ReadLine(); } /// <summary> /// 輸出事件對應(yīng)的ManagementBaseObject(本例中的Win32_Process實例)的信息 /// </summary> private static string GetInfo(ManagementBaseObject obj) { var instance = (ManagementBaseObject)obj["TargetInstance"]; return string.Format("{0} - {1} - {2}", instance["Name"], instance["ProcessId"], DateTime.Now); } }
調(diào)用示例
稍加修改一下就可以用來實現(xiàn)一個守護進程,具體用途應(yīng)該都懂得。
到此這篇關(guān)于C#使用WMI實現(xiàn)監(jiān)聽進程的啟動和關(guān)閉的文章就介紹到這了,更多相關(guān)C# WMI監(jiān)聽進程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#通過經(jīng)緯度計算2個點之間距離的實現(xiàn)代碼
這篇文章主要介紹了C#通過經(jīng)緯度計算2個點之間距離實現(xiàn)代碼,本文對實現(xiàn)原理、經(jīng)緯度基本知識等一并做了講解,需要的朋友可以參考下2014-08-08