zoukankan      html  css  js  c++  java
  • 提权获取进程路径并获取进程列表

    1、进程提权:

    1. BOOL CProgressInfo::AdjustPrivileges()  
    2. {  
    3.     HANDLE hToken = NULL;  
    4.     TOKEN_PRIVILEGES tp = {0};  
    5.     TOKEN_PRIVILEGES oldtp = {0};  
    6.     DWORD dwSize = sizeof(TOKEN_PRIVILEGES);  
    7.     LUID luid = {0};  
    8.   
    9.     if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {  
    10.         if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)  
    11.             return TRUE;  
    12.         else  
    13.             return FALSE;  
    14.     }  
    15.     if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {  
    16.         CloseHandle(hToken);  
    17.         return FALSE;  
    18.     }  
    19.   
    20.     tp.PrivilegeCount=1;  
    21.     tp.Privileges[0].Luid = luid;  
    22.     tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
    23.   
    24.     /* Adjust Token Privileges */  
    25.     if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {  
    26.         CloseHandle(hToken);  
    27.         return FALSE;  
    28.     }  
    29.   
    30.     // close handles  
    31.     CloseHandle(hToken);  
    32.     return TRUE;  
    33. }  

    2、获取进程列表(提权后可获取基本所有的进程路径):

    1. BOOL CProgressInfo::GetProgressList()  
    2. {  
    3.     BOOL bResult = FALSE;  
    4.     HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    5.     if ( hSnap == INVALID_HANDLE_VALUE )  
    6.         return FALSE;  
    7.   
    8.     HANDLE hProcess = NULL;  
    9.     PROCESSENTRY32 info = {0};  
    10.     info.dwSize = sizeof(PROCESSENTRY32);  
    11.   
    12.     BOOL bRet = Process32First(hSnap, &info);  
    13.     while(bRet) {  
    14.         hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, info.th32ProcessID);  
    15.         if (hProcess) {  
    16.             GetModuleFileNameEx(hProcess, NULL, /*缓冲区指针*/, MAX_PATH);//获取进程路径  
    17.         }  
    18.   
    19.         bRet = Process32Next(hSnap, &info);  
    20.     }  
    21.   
    22.     return TRUE;  
    23. }  

    3、根据进程的PID,结束此进程:

    1. void CProgressInfo::DeleteProgress(DWORD pUID)  
    2. {  
    3.     HANDLE hProcessHandle;  
    4.     hProcessHandle = ::OpenProcess(PROCESS_TERMINATE, FALSE,pUID);  
    5.     if(hProcessHandle)  
    6.     {  
    7.         TerminateProcess(hProcessHandle,-1);  
    8.         CloseHandle(hProcessHandle);  
    9.     }  
    10.     else  
    11.     {  
    12.         //......  
    13.     }  

    来源:http://blog.csdn.net/u012372584/article/details/61912606

     

  • 相关阅读:
    MongoDB 创建数据库
    MongoDB
    MongoDB 概念解析
    window平台安装 MongoDB(二)
    MongoDB入门学习(1)
    解决DevExpress10.2.4版本在VS2012工具箱控件不显示的问题
    Aspose.Word 输出表格后空格字符丢失的解决方法
    ArcEngine 创建空间参考设置默认域
    SPATIALITE 各版本数据库差异
    WGS84投影的WKID说明
  • 原文地址:https://www.cnblogs.com/acmexyz/p/8521861.html
Copyright © 2011-2022 走看看