摸鱼大法
转载于最强的琛
https://blog.csdn.net/liuzich/article/details/107878496
https://blog.csdn.net/liuzich/article/details/109008544
#include <bits/stdc++.h> #include <windows.h> #include <conio.h> #include <tlhelp32.h> #include <tchar.h> #include <ShellAPI.h> #include <iostream> void process_e() { HANDLE hToken; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL); CloseHandle(hToken); } bool process_k(DWORD dwPid) { printf("Kill进程Pid = %d\n", dwPid); HANDLE killHandle = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwPid); if (killHandle == NULL) return false; TerminateProcess(killHandle, 0); return true; } bool process_f(std::string strProcessName, DWORD& nPid) { TCHAR tszProcess[64] = { 0 }; lstrcpy(tszProcess, _T(strProcessName.c_str())); STARTUPINFO st; PROCESS_INFORMATION pi; PROCESSENTRY32 ps; HANDLE hSnapshot; memset(&st, 0, sizeof(STARTUPINFO)); st.cb = sizeof(STARTUPINFO); memset(&ps, 0, sizeof(PROCESSENTRY32)); ps.dwSize = sizeof(PROCESSENTRY32); memset(&pi, 0, sizeof(PROCESS_INFORMATION)); hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot == INVALID_HANDLE_VALUE) return false; if (!Process32First(hSnapshot, &ps)) return false; do { if (lstrcmp(ps.szExeFile, tszProcess) == 0) { nPid = ps.th32ProcessID; CloseHandle(hSnapshot); printf("找到进程: %s\n", tszProcess); return true; } } while (Process32Next(hSnapshot, &ps)); CloseHandle(hSnapshot); return false; } int main() { DWORD pid; process_e(); process_f("StudentMain.exe",pid); process_k(pid); return 0; }