这个代码可以强制关闭很多进程,不过像杀毒软件一类的高级进程,这个代码还是束手无策。。。。。。
好了,废话不多说,直接上代码!
#include#include #include #include #include #include #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"") using namespace std; void ManagerRun(LPCSTR exe, LPCSTR param, int nShow = SW_SHOW) { SHELLEXECUTEINFO ShExecInfo; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = "runas"; ShExecInfo.lpFile = exe; ShExecInfo.lpParameters = param; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = nShow; ShExecInfo.hInstApp = NULL; BOOL ret = ShellExecuteEx(&ShExecInfo); CloseHandle(ShExecInfo.hProcess); } int main(int argc, char *argv[]) { if(argc == 1) { ShowWindow(GetConsoleWindow(), SW_HIDE); ManagerRun(argv[0], "2"); return 1; } else if(argc == 2) { string ExeName; cout << "请输入要关闭的的进程名称:" << endl; getline(cin, ExeName); ExeName += ".exe"; TCHAR Kill_Name[MAX_PATH]; for(int i = 0; i < ExeName.size(); i++) Kill_Name[i] = TCHAr(ExeName[i]); while(true) { HANDLE hSnapshort = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hSnapshort == INVALID_HANDLE_VALUE) { cout << "CreateToolhelp32Snapshot调用失败!" << endl; exit(0); } PROCESSENTRY32 stcProcessInfo; stcProcessInfo.dwSize = sizeof(stcProcessInfo); BOOL bRet = Process32First(hSnapshort, &stcProcessInfo); while(bRet) { if(!strcmp(stcProcessInfo.szExeFile, Kill_Name)) { Sleep(2000); HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE, stcProcessInfo.th32ProcessID); ::TerminateProcess(hProcess, 0); CloseHandle(hProcess); } bRet = Process32Next(hSnapshort, &stcProcessInfo); } CloseHandle(hSnapshort); } } }
输入进程名的时候后面不要加.exe,还有,输入的是进程名,不是快捷方式的名字!这个代码没什么伤害,可以拿去恶搞~
好了,本期就到这里!



