杀死指定的进程名

/*******************************************************************************
函数名称  : 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;
}

  

时间: 2024-12-28 10:46:20

杀死指定的进程名的相关文章

通过DAC杀死指定会话

sqlserver 2005版本 --启用远程DAC连接 sp_configure 'remote admin connections', 1; GO RECONFIGURE; GO --连接方法 sqlcmd -S admin:dellsql  -d jinri -U sa -P [email protected][email protected] --查看会话 select session_id,cpu_time from sys.dm_exec_requests where session

Linux kill 杀死指定进程

一  杀死指定进程 现知道有一个php线程正在运行,需要杀死 root 26278 1 0 2015 ? 00:00:31 /usr/local/php/bin/php /var/www/html/redis/daemon/daemon_register.phproot 26280 1 0 2015 ? 00:00:34 /usr/local/php/bin/php /var/www/html/redis/daemon/daemon_register.php ps -ef 查询运行进程 [ema

Window 中杀死指定端口 cmd 命令行 taskkill

Windows平台   两步方法 :  1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f   在windows命令行窗口下执行过程 1.查看指定端口的占用情况netstat -aon|findstr "8080" 协议               本地地址                                 外部地址                         

(转)Window 中杀死指定端口 cmd 命令行 taskkill

Windows平台   两步方法 :  1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f   在windows命令行窗口下执行过程 1.查看指定端口的占用情况netstat -aon|findstr "8080" 协议               本地地址                                 外部地址                         

Delphi中上指定进程(进程名)

procedure KillProcess(ExeName: string); const PROCESS_TERMINATE = $0001; //进程的PROCESS_TERMINATE访问权限 var ContinueLoop: Boolean; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin //获取系统所有进程快照 FSnapshotHandle := CreateToolhelp32Snapshot(

MySQL 杀死指定用户的全部进程

mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root'; +------------------------+ | concat('KILL ',id,';') | +------------------------+ | KILL 3101;             | | KILL 2946;             | +----------------------

一条命令杀死指定名字的进程

ps -fe|grep mini_http_server | awk '!/grep/ {print $2}' | sed 's/^/kill -2 /' |sh 版权声明:本文为博主原创文章,未经博主允许不得转载.

android 模拟应用因内存不足被后台杀死命令

Android开发中,有时候我们需要测试下后台进程被杀,然后重新进入App时恢复现场的case.如果采用填充内存的方式,比较麻烦,下面介绍几种快速模拟后台进程被杀的方式: 方式1: 最简单的方法是在DDMS中点击"Stop Porcess"杀掉你的程序,在你调试程序的时候可以这样做. 方式2: 适合debug程序 Android Studio中打开Android Monitor,选择进程,将app按home键退到后台,点击terminate application按钮即可 方式3: a

批量杀死mysql连接

mysqladmin杀死所有/指定mysql连接 1.批量杀死所有mysql连接 mysqladmin -uroot -pxxx processlist |awk -F '|' '{print $2}' |xargs -n 1 mysqldamin -uroot -pxxx kill 2.批量杀死指定mysql连接 mysqladmin -uroot -pxxx processlist |awk -F '|' '{if ($3 == "Mike") print $2}' |xargs