判断进程是否存在
很早的东西,最先发的地方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;
}