• 杀死指定的进程名


       

     1 /*******************************************************************************
     2 函数名称  : LookUpProcessAndKill
     3 函数描述  : 遍历进程找到需要杀死的进程
     4 输入参数  : N/A
     5 输出参数  : N/A
     6 返回值    : N/A
     7 作者      : N/A
     8 *******************************************************************************/
     9 BOOL  LookUpProcessAndKill(const  vector<CString>  &vecProcessName)
    10 {
    11     BOOL bRet = FALSE;
    12     HANDLE SnapShot, ProcessHandle;  
    13     SHFILEINFO shSmall;  
    14     PROCESSENTRY32 ProcessInfo;  
    15 
    16     CString strSearchName;
    17     CString strRunProcessName;
    18     SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    19     if(SnapShot != NULL)   
    20     {
    21         ProcessInfo.dwSize = sizeof(ProcessInfo);  // 设置ProcessInfo的大小  
    22         BOOL Status = Process32First(SnapShot, &ProcessInfo);  
    23 
    24         //提升升级工具进程权限为SE_DEBUG_NAME,否则XP下无法杀掉进程
    25         HANDLE hToken;
    26         if(OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken))
    27         {
    28             LUID luid;
    29             if(LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid))
    30             {
    31                 TOKEN_PRIVILEGES TokenPrivileges;
    32                 TokenPrivileges.PrivilegeCount = 1;
    33                 TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    34                 TokenPrivileges.Privileges[0].Luid = luid;
    35                 AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, 0, NULL, NULL);
    36             }
    37             CloseHandle(hToken);
    38         }
    39 
    40         while(Status)  
    41         {  
    42             // 获取进程文件信息  
    43             SHGetFileInfo(ProcessInfo.szExeFile, 0, &shSmall, sizeof(shSmall), SHGFI_ICON|SHGFI_SMALLICON);  
    44 
    45             // 检测进程是否需要关闭
    46             strRunProcessName = ProcessInfo.szExeFile;
    47             strRunProcessName.MakeLower();
    48             for (vector<CString>::size_type it = 0; it != vecProcessName.size(); ++ it)
    49             {
    50                 strSearchName = vecProcessName[it];
    51                 strSearchName.MakeLower();
    52                 if(strSearchName == strRunProcessName)
    53                 {  
    54                     // 获取进程句柄,强行关闭  
    55                     ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);
    56                     if (ProcessHandle != NULL)
    57                     {
    58                         bRet = TerminateProcess(ProcessHandle, 1);
    59                         CloseHandle(ProcessHandle);
    60                     }
    61                     
    62                     break;  
    63                 }  
    64 
    65             }
    66         
    67             // 获取下一个进程的信息  
    68             Status = Process32Next(SnapShot, &ProcessInfo);  
    69         }     
    70     }
    71 
    72     return  bRet;
    73 }
  • 相关阅读:
    c# GDI+简单绘图(二)
    ProE 工程图教程系列4 ProE不能导出dwg等格式的解决办法
    McAfee卸载工具及卡巴KIS2009注册码
    Vista下修改网卡MAC地址
    开机后出现Spooler Subsystem App 的解决办法
    微软office 2007在线编辑平台Office Live Workspace(docx转doc格式)
    美丽的草原风电场————内蒙古锡林浩特阿巴嘎旗风电场
    ProE官方网站系列视频教程
    [转]Stimator:评估您的网站/博客的价值
    关注苏迪曼杯,关注Lining为羽毛球队打造的衣服
  • 原文地址:https://www.cnblogs.com/hwm520hlf1314/p/3458914.html
Copyright © 2020-2023  润新知