透過 System.Diagnostics.Process 類別,ASP.NET 頁面可列出伺服器所有執行中進程並終止指定進程。需部署於具備 Administrator 權限的虛擬目錄,謹慎使用以免誤殺關鍵系統進程。
<%@ Page Language="c#" %>
<%@ Import namespace="System.Diagnostics" %>
<script language="C#" runat="server">
void Page_Load(Object Sender, EventArgs e)
{
btnKill.Attributes.Add("onclick", "return confirm('確定要終止此進程嗎?');");
}
private void KillProcess(string processName)
{
try
{
foreach (Process proc in Process.GetProcessesByName(processName))
{
if (!proc.CloseMainWindow()) // 先嘗試優雅關閉
proc.Kill(); // 強制終止
}
msg.Text = processName + " 已終止。";
}
catch (Exception ex)
{
msg.Text = "終止 " + processName + " 失敗:" + ex.Message;
}
}
public void btnKill_Click(object sender, EventArgs e)
{
KillProcess(procname.SelectedItem.Text);
}
public void btnShow_Click(object sender, EventArgs e)
{
ArrayList list = new ArrayList();
foreach (Process p in Process.GetProcesses())
{
string name = p.ProcessName; // 直接取 ProcessName 屬性
list.Add(name);
}
procname.DataSource = list;
procname.DataBind();
}
</script>
<html><body>
<form id="frmProc" runat="server">
<asp:DropDownList id="procname" runat="server" />
<asp:Button id="btnKill" Text="終止進程" OnClick="btnKill_Click" runat="server" />
<asp:Button id="btnShow" Text="列出所有進程" OnClick="btnShow_Click" runat="server" />
<asp:Label id="msg" runat="server" />
</form>
</body></html>
Process.GetProcesses() 取得所有進程,GetProcessesByName() 依名稱篩選CloseMainWindow() 發送關閉訊息給視窗應用程式,比 Kill() 更安全confirm 防止誤操作