判断进程是否存在

很早的东西,最先发的地方http://blog.sina.com.cn/s/blog_65127e430100qn0q.html;突然又用到,再转回过来

实习期间,因老师对学生常常退出客户端,使得老师无法对学生进行管理,就写了个程序,下面是部分代码,总体的思路是,判断学生端进程是否存在,如果不存在,对其主机进行关机操作。其实我还加了另一部分,把原来的学生端的进程改成了smms.exe,使得部分学生不知道哪个是客户端,其实大部分利用的还是木马捆绑的原理。

#include "stdafx.h"
#include "Tlhelp32.h"
#include <process.h>

DWORD GetProcessidFromName(LPCTSTR name)
{
 PROCESSENTRY32 pe;
 DWORD id=0;
 HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 pe.dwSize=sizeof(PROCESSENTRY32);
 if(!Process32First(hSnapshot,&pe))
  return 0;
 while(1)
 {
  pe.dwSize=sizeof(PROCESSENTRY32);
  if(Process32Next(hSnapshot,&pe)==FALSE)
   break;
  if(strcmp(pe.szExeFile,name)==0)
  {
   //MessageBox(NULL,pe.szExeFile,"im you",MB_HELP);
   //MessageBox(NULL,name,"im you",MB_HELP);
   id=pe.th32ProcessID;   
   break;
  }
   }
 CloseHandle(hSnapshot);
 return id;
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

while(1)

 Sleep(3000);
 if (GetProcessidFromName("smms.exe") == 0)
 {
      //::ExitWindowsEx(EWX_REBOOT   |   EWX_FORCE,   0); 
  system("c:\\windows\\system32\\shutdown.exe -s -t 1");
 }

}

return 0;
}

posted on 2012-02-28 14:39  belie8  阅读(419)  评论(0编辑  收藏  举报

导航