C#获取进程和对进程的操作
时间:2021-07-14 19:50:35
最近看到一个考试系统,有个功能是用来监视进程的。一旦发现如Communicator.exe这样的违禁软件就立即杀死进程并上报给服务器。我稍 微研究了一下,这个功能实现起来其实很简单。就是使用ManagementObjectSearcher获取进程列表,然后放在一个Collection 里,之后就可以按照自己的逻辑去做了。
using System;
using System.Management;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
// Show Process List
Console.WriteLine("===========Process List===========");
ManagementObjectCollection objects = new ManagementObjectSearcher("SELECT * FROM Win32_Process").Get();
foreach (ManagementObject item in objects)
{
Console.WriteLine((item["Name"].ToString()));
}
// Create Ban List
Console.WriteLine("===========Ban List===========");
string lst = "Communicator.exe,POWERPNT.exe,notepad.exe";
string[] bannedProc = lst.Split(‘,‘);
foreach (string s in bannedProc)
{
Console.WriteLine(s);
}
// Search and Destroy
Console.WriteLine("===========Search and Destroy===========");
Console.WriteLine("Searching for banned process...");
int count = 0;
foreach (string item in bannedProc)
{
if (DetectProcess(item))
{
count++;
Console.WriteLine("Process [{0}] Detected!", item);
Console.WriteLine("[{0}] was killed {1}.", item, KillProcess(item) ? "Successfully" : "Unsucessfully");
}
}
Console.WriteLine("Done, {0} banned process found", count);
}
protected static bool DetectProcess(string pProcessName)
{
ManagementObjectCollection objects = new ManagementObjectSearcher("SELECT * FROM Win32_Process").Get();
foreach (ManagementObject item in objects)
{
string str = item["Name"].ToString();
if (str.Trim().ToUpper() == pProcessName.Trim().ToUpper())
{
return true;
}
}
return false;
}
public static bool KillProcess(string pProcessName)
{
ManagementObjectCollection objects = new ManagementObjectSearcher("SELECT * FROM Win32_Process").Get();
foreach (ManagementObject item in objects)
{
string str = item["Name"].ToString();
if (str.Trim().ToUpper() == pProcessName.Trim().ToUpper())
{
string[] args = new string[] { "0" };
item.InvokeMethod("Terminate", args);
return true;
}
}
return false;
}
}
}
效果如下:
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java JDK 二分法 分析demo(推荐)
Spring Boot 员工管理系统超详细教程(源码分享)
![](https://img.aspxhome.com/file/2023/5/68565_0s.jpg)
C#中缓存的基本使用方法
![](https://img.aspxhome.com/file/2023/1/81141_0s.gif)
C#获取程序文件相关信息的方法
Java实现NIO聊天室的示例代码(群聊+私聊)
![](https://img.aspxhome.com/file/2023/8/59698_0s.jpg)
通过实例讲解springboot整合WebSocket
深入浅出MappedByteBuffer(推荐)
Android实现摄像头拍照功能
Mybatis分页插件PageHelper的使用详解
SpringBoot使用Atomikos技术整合多数据源的实现
mybatis-plus 扩展批量新增的实现
java 中 poi解析Excel文件版本问题解决办法
C#通过正则表达式实现提取网页中的图片
Java简单验证身份证功能示例
![](https://img.aspxhome.com/file/2023/4/57924_0s.png)
浅谈JAVA8给我带了什么——流的概念和收集器
![](https://img.aspxhome.com/file/2023/5/90205_0s.png)
C#/VB.NET实现PPT或PPTX转换为图像功能
![](https://img.aspxhome.com/file/2023/8/83268_0s.png)
Java 反射类型Type的用法说明
Java使用poi操作excel实例解析
C#中的委托介绍
![](https://img.aspxhome.com/file/2023/6/77296_0s.png)
通过实例解析JMM和Volatile底层原理
![](https://img.aspxhome.com/file/2023/1/62201_0s.png)