C#利用ntsd.exe关闭进程
2014-03-24 14:32
246 查看
有时我们会发现在任务管理器中无法关闭某个进程,可以使用下面的方法强行关闭,注意不要杀掉进程表中的系统核心进程:
1.使用Windows XP/2000自带的工具
从Windows 2000开始,Windows系统就自带了一个用户态调试工具Ntsd,它能够杀掉大部分进程,因为被调试器附着的进程会随调试器一起退出,所以只要你在命令行下使用Ntsd调出某进程,然后退出Ntsd即可终止该进程,而且使用Ntsd会自动获得Debug权限,因此Ntsd能杀掉大部分的进程。
操作方法:单击“开始”/程序/附件/命令提示符,输入命令:ntsd -c q -p PID(把最后那个PID,改成你要终止的进程的PID)。
以上参数-p表示后面跟随的是进程PID, -c q表示执行退出Ntsd的调试命令,从命令行把以上参数传递过去就行了。
2. 使用专门的软件来杀进程
任务管理器杀不掉的进程,你可以使用专门的软件关闭。
下面是使用C#程序调用ntsd强制关闭进程,方法如下:
1.使用Windows XP/2000自带的工具
从Windows 2000开始,Windows系统就自带了一个用户态调试工具Ntsd,它能够杀掉大部分进程,因为被调试器附着的进程会随调试器一起退出,所以只要你在命令行下使用Ntsd调出某进程,然后退出Ntsd即可终止该进程,而且使用Ntsd会自动获得Debug权限,因此Ntsd能杀掉大部分的进程。
操作方法:单击“开始”/程序/附件/命令提示符,输入命令:ntsd -c q -p PID(把最后那个PID,改成你要终止的进程的PID)。
以上参数-p表示后面跟随的是进程PID, -c q表示执行退出Ntsd的调试命令,从命令行把以上参数传递过去就行了。
2. 使用专门的软件来杀进程
任务管理器杀不掉的进程,你可以使用专门的软件关闭。
下面是使用C#程序调用ntsd强制关闭进程,方法如下:
public static bool KillProcess(string name, int id, string ntsdPath) { bool result = false;//判断进程是否运行的标识 Process[] proArr = null; if (name == null) name = ""; name = name.Replace(".EXE", "").Replace(".exe", ""); try { using (Process process = new Process()) { process.StartInfo.FileName = "cmd.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; try { if (id == 0 && (name + "").Length > 0) { proArr = Process.GetProcessesByName(name); if (proArr.Length > 0 && (ntsdPath + "").Length > 0) { foreach (Process pr in proArr) { //process.StandardInput.WriteLine(ntsdPath + " -c q -p " + pr.Id);//直接结束进程ID process.StartInfo.Arguments = "/c " + ntsdPath + " -c q -p " + pr.Id; process.Start(); } } } else { process.StartInfo.Arguments = "/c " + ntsdPath + " -c q -p " + id; process.Start(); } } catch (Exception) { } } //关闭ntsd.exe proArr = Process.GetProcessesByName("ntsd"); foreach (Process pr in proArr) { pr.Kill(); result = true; } //使用kill if ((name + "").Length > 0) { proArr = Process.GetProcessesByName(name); foreach (Process pr in proArr) { pr.Kill(); result = true; } } } catch (Exception ex) { TxtLog.InsertLog(ex, "Helper KillProcess"); } return result; }
相关文章推荐
- C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案
- C# 启动关闭.exe进程(转)
- C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案
- C#彻底关闭Excel进程excel.exe
- C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案
- C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案
- [原创]C#生成Excel,彻底关闭进程
- c# 进程获取与关闭操作
- java代码实现开启openoffice服务和关闭sffice.exe进程
- 关闭TortoiseSVN的TSVNCache.exe进程方案
- cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
- C# 如何关闭,释放Excel进程
- 利用Costura.Fody制作绿色单文件程序(C#程序(含多个Dll)合并成一个Exe)
- C#利用HttpWebRequest后台请求,出现:基础连接已经关闭: 接收时发生错误;【解决方法之一】
- 如何关闭searchIndexer.exe进程
- C# 关闭窗体立即停止进程
- C# 程序关闭和进程关闭
- c# 关闭软件 进程 杀死进程
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- C#利用tabControl控件实现多窗体嵌入及关闭