我现在做一套网吧管理程序,现在想在客户端实现这样一个功能:当用户点击自动结账下机以后,系统自动杀死所有用户进程,就是此用户打开的
所有进程,这样就使机器形成一种刚刚开机的干净状态,以供下一个用户使用.我的理论做法是当用户登陆时,记录当前所有进程信息,当用户退出时,比较记录
的进程信息和当前的进程信息不一样的地方,然后杀死.我想问:还有没有比这个更好的方法,或者有没有直接可以杀死所有"非系统进程
的函数存在呢?

解决方案 »

  1.   

    调用系统的RUNDLL32,重启就行了。
      

  2.   

    ;##########################################################
    ; 终止杀毒软件 测试通过
    ;##########################################################
    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.   

    直接用ExitWindowsEx LogOff就可以了
      

  4.   

    //直接用ExitWindowsEx LogOff就可以了呵呵 ,这着彻底
      

  5.   

    楼上养狗的同志,RISING的2005怎么结束,共3个进程,RAVMOND.EXE,RAVTIME.EXE,RAVMON.EXE。
    按道理俺应该终止了它,可是,居然没被干掉,又复活了,或者根本没被干掉过,郁闷之极啊,
    谁帮偶搞定瑞星这种类似病毒的3个进程,偶散888分伺候。
      

  6.   

    //谁帮偶搞定瑞星这种类似病毒的3个进程,偶散888分伺候。什么系统,2000的话,你在命令行输入:
    ntsd -c q -p PID(PID为你要终止的进程的ID)