高分求助,杀死进程的问题

LargeM 2002-12-23 05:21:03
一个控制台程序,在Win2000下运行时出现异常,弹出一个对话框,提示内存访问异常,使用TerminalProcess将该控制台进程杀死,但是弹出的对话框并没有退出,而且该控制台进程的内核对象也没有退出。如何才能彻底的杀死出现异常的进程呢(用编程的方法)。
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jishiping 2002-12-26
  • 打赏
  • 举报
回复
#include <tlhelp32.h>

void KillProgram(LPCSTR ExeName)
{
LPCSTR File;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;

if (!ExeName || !ExeName[0])
return;
File = strrchr(ExeName, '\\');
if (File!=0) ExeName = File+1;
hProcessSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1) return;

memset(&pe32, 0, sizeof(pe32));
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
do {
File = strrchr(pe32.szExeFile, '\\');
File = File? File+1 : pe32.szExeFile;
if (strcmpi(File,ExeName)==0) {
TerminateProcess(OpenProcess(
PROCESS_ALL_ACCESS,0,pe32
.th32ProcessID), 0);
break;
}
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseHandle(hProcessSnap);
}
ylc001 2002-12-26
  • 打赏
  • 举报
回复
病毒原型!
sufeng 2002-12-26
  • 打赏
  • 举报
回复
呵呵,windows 2000下没这么容易,你必须提升你的进程到debug权限才可以杀掉某些进程的。

程序大战玩过吗?就是一群进程互相杀,保护自我,呵呵。
finix 2002-12-25
  • 打赏
  • 举报
回复
TerminalProcess啊!
LargeM 2002-12-24
  • 打赏
  • 举报
回复
但是有很多异常是没法捕获的,我想寻求一种外部终止进程的方法。
sucker 2002-12-23
  • 打赏
  • 举报
回复
TerminalProcess强制杀进程会导致一些正常的退出处理未执行的问题
ExitProcess()比它好一点
其实最好的办法是捕捉异常后使进程函数正常返回。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧