杀死指定的进程名
2013-12-05 10:04
197 查看
/******************************************************************************* 函数名称 : LookUpProcessAndKill 函数描述 : 遍历进程找到需要杀死的进程 输入参数 : N/A 输出参数 : N/A 返回值 : N/A 作者 : N/A *******************************************************************************/ BOOL LookUpProcessAndKill(const vector<CString> &vecProcessName) { BOOL bRet = FALSE; HANDLE SnapShot, ProcessHandle; SHFILEINFO shSmall; PROCESSENTRY32 ProcessInfo; CString strSearchName; CString strRunProcessName; SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(SnapShot != NULL) { ProcessInfo.dwSize = sizeof(ProcessInfo); // 设置ProcessInfo的大小 BOOL Status = Process32First(SnapShot, &ProcessInfo); //提升升级工具进程权限为SE_DEBUG_NAME,否则XP下无法杀掉进程 HANDLE hToken; if(OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken)) { LUID luid; if(LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) { TOKEN_PRIVILEGES TokenPrivileges; TokenPrivileges.PrivilegeCount = 1; TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; TokenPrivileges.Privileges[0].Luid = luid; AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, 0, NULL, NULL); } CloseHandle(hToken); } while(Status) { // 获取进程文件信息 SHGetFileInfo(ProcessInfo.szExeFile, 0, &shSmall, sizeof(shSmall), SHGFI_ICON|SHGFI_SMALLICON); // 检测进程是否需要关闭 strRunProcessName = ProcessInfo.szExeFile; strRunProcessName.MakeLower(); for (vector<CString>::size_type it = 0; it != vecProcessName.size(); ++ it) { strSearchName = vecProcessName[it]; strSearchName.MakeLower(); if(strSearchName == strRunProcessName) { // 获取进程句柄,强行关闭 ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID); if (ProcessHandle != NULL) { bRet = TerminateProcess(ProcessHandle, 1); CloseHandle(ProcessHandle); } break; } } // 获取下一个进程的信息 Status = Process32Next(SnapShot, &ProcessInfo); } } return bRet; }
相关文章推荐
- windos基本命令 查看指定端口,将指定进程杀死
- windows平台下杀死指定端口的进程(转载)
- 杀死指定进程名称的小VBS
- linux 杀死指定名称进程
- Linux kill 杀死指定进程
- IBM/AIX下找到占用指定端口的进程并杀死它
- windows查看指定端口进程以及杀死命令
- 杀死指定进程名称的小VBS
- MySQL 杀死指定用户的全部进程
- ubuntu杀死含有指定字符串的的一系列进程
- linux使用脚本杀死指定名称的进程[zl]
- Linux中通过 kill命令 杀死指定进程
- 转:shell杀死指定名称的进程
- 快捷启动、停止、重启、杀死指定端口MySQL进程的sh脚本
- 如何用shell脚本杀死指定名称的进程
- linux下杀死指定java进程
- linux 批量杀死包含指定关键词的进程
- 杀死指定数据库内的所有进程
- VC杀死指定的进程名
- java 遇到未知异常使程序崩溃,输出jvm的dump崩溃信息到指定文件,然后杀死此进程