System.Diagnostics.Process 提供完整的進程枚舉、資訊查詢、啟動與終止功能。本文示範如何列舉所有進程、讀取模組資訊、依完整路徑精準結束目標進程。
Process.GetProcesses():取得所有進程陣列 (含系統隱藏進程)。ProcessName:不含副檔名的檔名 (如 notepad)。Modules:載入模組集合,[0] 為主執行檔完整路徑。Kill():強制終止,**不彈出儲存對話框**,慎用。StartInfo:僅用於啟動新進程,不適用查詢既有進程。private void btnProcess_Click(object sender, EventArgs e)
{
Process[] procs = Process.GetProcesses();
richTextBox1.Clear();
foreach (Process p in procs)
{
if (p.Id == 0) continue; // 系統閒置進程
string info = $"進程名稱: {p.ProcessName} ID: {p.Id}";
try
{
if (p.Modules != null && p.Modules.Count > 0)
{
ProcessModule pm = p.Modules[0];
info += $"\n 主模組: {pm.FileName}";
info += $"\n 模組名: {pm.ModuleName}";
info += $"\n 版本資訊:\n{pm.FileVersionInfo}";
// 依完整路徑比對並結束
if (pm.FileName.Equals(textBox1.Text.Trim(), StringComparison.OrdinalIgnoreCase))
{
p.Kill();
info += "\n >> 已強制結束";
}
}
}
catch (System.ComponentModel.Win32Exception)
{
info += "\n (無權限讀取模組資訊)";
}
finally
{
richTextBox1.AppendText(info + "\n==========================\n");
}
}
}
進程名稱: SearchNet ID: 3092
主模組: C:\Program Files\SearchNet\SearchNet.exe
版本資訊:
File: C:\Program Files\SearchNet\SearchNet.exe
InternalName: SearchNet
FileVersion: 1, 0, 2, 4
FileDescription: IE地址欄搜索程式
...
==========================
進程名稱: svchost ID: 1700
主模組: C:\WINDOWS\system32\svchost.exe
版本資訊: ...
==========================
requireAdministrator。Kill() 不給進程釋放資源機會,可能導致資料損毀。優先嘗試 CloseMainWindow() (僅適用有視窗進程)。Process.GetProcessesByName("name") 可依名稱快速過濾。Prefer 32-bit 或編譯為 64 位元。掌握 Process 類別的枚舉、模組存取、終止方法,可建立進程監控、防毒輔助、自動化測試等工具。務必處理權限例外與誤殺風險。