zoukankan      html  css  js  c++  java
  • TerminateProcess结束进程(包括进程信息遍历)

    #include<stdio.h>
    #include <WINDOWS.H>
    #include<Tlhelp32.h>
    #include <string>      
    #include <map>
    
    using namespace std;
    
    // 进程信息
    map<DWORD, string> mapPrsInfo;
    
    BOOL KillProcess(DWORD dwProcessId)  
    { 
        HANDLE hProcess= OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessId);  
        
        BOOL bKill= TerminateProcess(hProcess,0);  
        if(!bKill)  
        {  
            return FALSE; 
        } 
    
        return TRUE;
    }
    
    bool EnumProcess()  
    {   
        //CreateToolhelp32Snapshot 
        //Process32Next 
        //Process32First  
        PROCESSENTRY32 pe32;  
        pe32.dwSize=sizeof(PROCESSENTRY32);  
        HANDLE hSnapshot= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  
        if(INVALID_HANDLE_VALUE==hSnapshot)  
        {
            return false;  
        }
        
        if(Process32First(hSnapshot,&pe32))  
        {  
            do   
            {  
                mapPrsInfo[pe32.th32ProcessID] = string(pe32.szExeFile);
                printf("ID:%d,Name:%s
    ",pe32.th32ProcessID,pe32.szExeFile);  
            } while (Process32Next(hSnapshot,&pe32)); 
        }  
    
        return false;  
    }  
    
    bool EnablePri()  
    {  
        //OpenProcessToken 
        //LookupPrivilegeValue  
        //AdjustTokenPrivileges()  
        HANDLE TokenHandle;  
        TOKEN_PRIVILEGES tkp;  
        tkp.PrivilegeCount=1;  
        
        BOOL bOpen= OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&TokenHandle);  
        if(!bOpen) 
        {
            return false; 
        }
        
        BOOL bLook= LookupPrivilegeValue(NULL,SE_SECURITY_NAME,&tkp.Privileges[0].Luid);  
        
        if(!bLook) 
        {
            return false; 
        }
    
        BOOL bAdjust= AdjustTokenPrivileges(TokenHandle,false,&tkp,sizeof(tkp),NULL,NULL);  
        
        return(GetLastError()==ERROR_SUCCESS);  
    } 
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        if(!EnablePri()) 
        {
            printf("EnablePri fail
    ");  
            return 0;  
        }  
    
        if(EnumProcess())  
        {  
            printf("EnumProcess fail
    ");  
            getchar();  
            return 0;  
        }  
    
        printf("InPut Process PID:"); 
        DWORD dwProcessId;  
        scanf("%d",&dwProcessId);  
    
        system("pause");
    
         return 0;
    }
    

    转自:http://blog.csdn.net/apxar/article/details/9898649

    其他:http://blog.csdn.net/yangluoning/article/details/14647969

  • 相关阅读:
    查找最大回文
    java-线程池
    Java基础 IO流——第一部分
    tomcat优化
    反射
    网络编程——第二部分
    网络编程——第一部分
    Java基础 IO流——第四部分
    Java基础 IO流——第三部分
    Java基础 IO流——第二部分
  • 原文地址:https://www.cnblogs.com/jdfemqi/p/3445212.html
Copyright © 2011-2022 走看看