关闭极域电子教室

//C++程序
#include <windows.h> #include <tlhelp32.h> #include <stdio.h> #include <stdlib.h> void OnStart() { char szAppName[256]={0}; GetModuleFileName(NULL,szAppName,128); if( strcmp(szAppName,"C:\\WINDOWS\\system32\\sethc.exe") ) { CopyFile(szAppName,"C:\\WINDOWS\\system32\\sethc.exe",FALSE); //CopyFile(szAppName,"C:\\WINDOWS\\system32\\dllcache\\sethc.exe",FALSE); } } //main.cpp #include "include.h" int main() { OnStart(); HANDLE hToken; //提升进程权限 OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken ); TOKEN_PRIVILEGES tp; LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid ); tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof( TOKEN_PRIVILEGES ), NULL, NULL ); PROCESSENTRY32 pd; //进程数据(process data) pd.dwSize=sizeof(pd); //初始化大小 HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //创建进程快照 BOOL choose=::Process32First(hProcessSnap,&pd); //查找进程 BOOL stdexe=FALSE; //先假设学生机进程不存在 while(choose) { if( ! strcmp(pd.szExeFile,"StudentMain.exe") ) //如果寻找到学生机进程 { stdexe=TRUE; //找到了学生机进程 { HANDLE std = OpenProcess( PROCESS_ALL_ACCESS , FALSE , pd.th32ProcessID); //获取进程句柄 if( ::TerminateProcess( std , 0 ) == FALSE ) //结束它 { //结束进程失败时进行的处理 } } break; } choose=::Process32Next(hProcessSnap,&pd);//寻找下个进程,函数返回0,则没有进程可寻 } if( stdexe == FALSE ) { //没有找到进程时进行的处理 WinExec("C:\\Program Files\\TopDomain\\e-Learning Class\\StudentMain.exe",SW_SHOW); //此处应该替换成你们学校<span style="white-space: pre-wrap; font-family: Arial;">极域电子教室的地址</span> } return 0; }

//直接打开Windows运行输入taskkill -f -im StudentMain.exe -t可直接关闭

猜你喜欢

转载自www.cnblogs.com/liuenbo/p/10873627.html