zoukankan      html  css  js  c++  java
  • 杀死指定的进程名

       

     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 }
  • 相关阅读:
    请输入关键字
    如何把心动变成行动
    理解ASP.NET MVC系列之一:ASP.NET MVC基于MVC设计模式
    window.showModalDialog()
    visual studio 2010 winform程序不能添加对system.web的引用[转载]
    理解ASP.NET MVC系列之三:从URL到Route
    Dan计划:重新定义人生的10000个小时
    为Visual Studio添加配色方案
    [转载]用缓存服务器负载均衡 提数据库查询效率
    Json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/hwm520hlf1314/p/3458914.html
Copyright © 2011-2022 走看看