C#獲取進(jìn)程和對(duì)進(jìn)程的操作
最近看到一個(gè)考試系統(tǒng),有個(gè)功能是用來(lái)監(jiān)視進(jìn)程的。一旦發(fā)現(xiàn)如Communicator.exe這樣的違禁軟件就立即殺死進(jìn)程并上報(bào)給服務(wù)器。我稍 微研究了一下,這個(gè)功能實(shí)現(xiàn)起來(lái)其實(shí)很簡(jiǎn)單。就是使用ManagementObjectSearcher獲取進(jìn)程列表,然后放在一個(gè)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;
}
}
}
效果如下:
- c#使用ManagedWifi查看當(dāng)前Wifi信號(hào)并選擇wifi的示例
- C#獲取進(jìn)程的主窗口句柄的實(shí)現(xiàn)方法
- C#獲取Windows進(jìn)程監(jiān)聽(tīng)的TCP/UDP端口實(shí)例
- C#控制IE進(jìn)程關(guān)閉和緩存清理的實(shí)現(xiàn)代碼
- C#網(wǎng)絡(luò)編程基礎(chǔ)之進(jìn)程和線程詳解
- C#多線程傳遞參數(shù)及任務(wù)用法示例
- C#子線程更新UI控件的方法實(shí)例總結(jié)
- 淺解關(guān)于C#多線程的介紹
- c#多線程中Lock()關(guān)鍵字的用法小結(jié)
- C#線程定義和使用方法詳解
- C#信號(hào)量用法簡(jiǎn)單示例
相關(guān)文章
c# OpenCvSharp實(shí)現(xiàn)常見(jiàn)檢測(cè)(斑點(diǎn)檢測(cè),輪廓檢測(cè),邊緣檢測(cè))
這篇文章主要為大家詳細(xì)介紹了c#如何使用OpenCvSharp實(shí)現(xiàn)常見(jiàn)檢測(cè)(斑點(diǎn)檢測(cè),輪廓檢測(cè),邊緣檢測(cè)),文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2023-12-12詳解C# TimeSpan 計(jì)算時(shí)間差(時(shí)間間隔)
本篇文章主要介紹了C# TimeSpan 計(jì)算時(shí)間差(時(shí)間間隔),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12C#實(shí)現(xiàn)字符串進(jìn)制轉(zhuǎn)換方法匯總
這篇文章主要介紹了C#實(shí)現(xiàn)字符串進(jìn)制轉(zhuǎn)換方法匯總,給大家羅列了十幾種機(jī)制轉(zhuǎn)換問(wèn)題,感興趣的朋友跟隨小編一起看看吧2022-11-11C# 實(shí)現(xiàn)QQ式截圖功能實(shí)例代碼
本篇文章主要介紹了C# 實(shí)現(xiàn)QQ式截圖功能實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02C#根據(jù)年月日計(jì)算星期幾的函數(shù)小例子
這篇文章介紹了C#根據(jù)年月日計(jì)算星期幾的函數(shù)小例子,有需要的朋友可以參考一下2013-07-07C#實(shí)現(xiàn)文件與二進(jìn)制互轉(zhuǎn)并存入數(shù)據(jù)庫(kù)
這篇文章主要介紹了C#實(shí)現(xiàn)文件與二進(jìn)制互轉(zhuǎn)并存入數(shù)據(jù)庫(kù),本文直接給出代碼實(shí)例,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06c# WPF中通過(guò)雙擊編輯DataGrid中Cell的示例(附源碼)
這篇文章主要介紹了c# WPF中通過(guò)雙擊編輯DataGrid中Cell的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03