我们正在尝试开发一个可以监视在Windows机器上执行的程序/进程的小应用程序.
如果程序/进程不应该运行,则应该阻止它.它的工作原理类似于防病毒.
这是基本的想法.
我想知道挂钩操作系统的方法,以获得有关尝试在机器中运行的每个程序/进程的通知.
最简单的方法是使用WMI.特别是监视Win32_ProcessStartTrace.这比Win32_Process更好,因为它设置为使用事件,而Win32_Process需要更多CPU密集的轮询.以下是如何在C#中完成的.首先确保将System.Management设置为项目的参考.
public System.Management.ManagementEventWatcher mgmtWtch; public Form1() { InitializeComponent(); mgmtWtch = new System.Management.ManagementEventWatcher("Select * From Win32_ProcessStartTrace"); mgmtWtch.EventArrived += new System.Management.EventArrivedEventHandler(mgmtWtch_EventArrived); mgmtWtch.Start(); } void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e) { MessageBox.Show((string)e.NewEvent["ProcessName"]); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { mgmtWtch.Stop(); }
每次启动新进程时,代码都会生成一个消息框.从那里你可以检查白名单/黑名单并采取适当的行动.