using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Diagnostics; namespace WebUI { public partial class ProcessTest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } #region 进程启动方法 /// <summary> /// 进程启动方法 /// </summary> /// <param name="processName">可执行文件</param> /// <param name="arg">执行参数</param> /// <param name="workingDirectory">当前路径</param> /// <returns>返回启动进程实例</returns> static public Process ProcessStart(string processName, string arg, string workingDirectory) { ProcessStartInfo psArgw = new ProcessStartInfo(processName, arg); psArgw.WorkingDirectory = workingDirectory; psArgw.WindowStyle = ProcessWindowStyle.Hidden; return Process.Start(psArgw); } /// <summary> /// 列出所有可访问进程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnList_Click(object sender, EventArgs e) { Process[] processes; processes = Process.GetProcesses(); string str = ""; foreach (Process p in processes) { try { str = p.ProcessName; this.ddlList.Items.Add("名称:" + p.ProcessName + ",启动时间:" + p.StartTime.ToShortTimeString() + ",进程ID:" + p.Id.ToString()); } catch (Exception ex) { this.ddlList.Items.Add(ex.Message.ToString());//某些系统进程禁止访问,所以要加异常处理 } } } protected void btnFind_Click(object sender, EventArgs e) { txtFind.Text = txtFind.Text.Trim().ToLower(); if (txtFind.Text.Length > 0) { Process[] arrP = Process.GetProcesses(); foreach (Process p in arrP) { try { if (p.ProcessName.ToLower() == txtFind.Text) { lblShow.Text = txtFind.Text + " 找到了,PID为 " + p.Id.ToString(); return; } } catch { } } lblShow.Text = "未找到该进程,请检查输入!"; } } protected void btnKill_Click(object sender, EventArgs e) { txtFind.Text = txtFind.Text.Trim().ToLower(); int pid = -1; if (txtFind.Text.Length > 0) { Process[] arrP = Process.GetProcesses(); foreach (Process p in arrP) { try { if (p.ProcessName.ToLower() == txtFind.Text) { pid = p.Id; break; } } catch { } } if (pid != -1) RunCmd("ntsd -c q -p " + pid); } } /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> /// <param name="command"></param> /// <returns></returns> public string RunCmd(string command) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c " + command; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); return p.StandardOutput.ReadToEnd(); } #endregion } } ntsd.exe在windows vista以上的版本(包括windows 2008)上,出于安全考虑已经被MS给去掉了,但可以直接从xp下复制过来继续使用, http://files.cnblogs.com/yjmyzz/ntsd.rar