ASP.NET中編程殺死進程
|
通過ASP.NET可以對一些無用的進程進行遠程殺死,下面的代碼先列出正在活動的所有進程,然后進行殺死。需要注意的是:這個文件要放在具有Administrator訪問權限的虛擬目錄下。
以下是C#代碼:
<%@ Page Language="c#" %> <HTML> <HEAD> <% @ Import namespace= "System.Diagnostics" %> <script language="C#" runat="Server" debug="true"> void Page_Load(Object Sender, EventArgs e){ btnKill.Attributes.Add("onclick", "javascript: return confirm('你真的要殺死這個進程嗎?');"); } private void KillProcess(string processName){ System.Diagnostics.Process myproc= new System.Diagnostics.Process(); //得到所有打開的進程 try{ foreach (Process thisproc in Process.GetProcessesByName(processName)) { if(!thisproc.CloseMainWindow()){ thisproc.Kill(); } } } catch(Exception Exc) { msg.Text+= "殺死" +procname.SelectedItem.Text + "失敗!"; } } public void btnKill_Click(object sender, System.EventArgs e) { KillProcess(procname.SelectedItem.Text); msg.Text= procname.SelectedItem.Text +" 已經被殺死。"; } public void btnShow_Click(object sender, System.EventArgs e){ ArrayList procList =new ArrayList(); string tempName=""; int begpos; int endpos; foreach (Process thisProc in System.Diagnostics.Process.GetProcesses()) { tempName=thisProc.ToString(); begpos = tempName.IndexOf("(")+1; endpos= tempName.IndexOf(")"); tempName=tempName.Substring(begpos,endpos-begpos); procList.Add(tempName); } procname.DataSource=procList; procname.DataBind(); } </script> </HEAD> <body> <Basefont Face="Tahoma" /> <center><h2>ASP.NET 進程殺死器!</h2><BR> <Table cellspacing=2 cellpadding=2 border=0 BGCOLOR="#fFCC66"> <form id="frmProc" runat="Server" method="post"> <TR><TD><ASP:DropDownList id="procname" runat="server" /></TD><TD> 進程名字</TD></TR> <TR><TD> <asp:button id="btnKill" Text="殺死進程" runat="server" CausesValidation="False" onclick="btnKill_Click" /> </TD> <TD><asp:button id="btnShow" Text="列出所有進程" runat="server" CausesValidation="False" onclick="btnShow_Click" /> </TD></TR> </TABLE> <center><asp:Label id="msg" runat="server"/></center> </form> </center> </body> </HTML> |