zoukankan      html  css  js  c++  java
  • 【转】windows服务程序提升权限

     1 void ImpersonateConsoleSession(DWORD dwSessionId)
     2 {
     3     PROCESSENTRY32 procEntry;
     4     HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     5     procEntry.dwSize = sizeof(PROCESSENTRY32);
     6     Process32First(hSnap, &procEntry);
     7     DWORD winlogonPid = 0;
     8     do {
     9         if (!wcscmp(procEntry.szExeFile, L"winlogon.exe"))
    10         {
    11             DWORD winlogonSessId = 0;
    12             if (ProcessIdToSessionId(procEntry.th32ProcessID, &winlogonSessId) && winlogonSessId == dwSessionId)
    13             {
    14                 winlogonPid = procEntry.th32ProcessID;
    15                 break;
    16             }
    17         }
    18     } while (Process32Next(hSnap, &procEntry) != 0);
    19     CloseHandle(hSnap);
    20     if (winlogonPid)
    21     {
    22         HANDLE hProcess = OpenProcess(MAXIMUM_ALLOWED, 0, winlogonPid);
    23         HANDLE hPToken;
    24         OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE, &hPToken);
    25         CloseHandle(hProcess);
    26         HANDLE hUserTokenDup;
    27         DuplicateTokenEx(hPToken, MAXIMUM_ALLOWED, 0, SecurityIdentification, TokenPrimary, &hUserTokenDup);
    28         CloseHandle(hPToken);
    29         ImpersonateLoggedOnUser(hUserTokenDup);
    30         CloseHandle(hUserTokenDup);
    31     }
    32 }
    ImpersonateConsoleSession(WTSGetActiveConsoleSessionId());
    HANDLE hdevice = CreateFile(..., SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION, 0);
    RevertToSelf();


    转自:https://oomake.com/question/1063645
  • 相关阅读:
    指定时间的月初和月末一天的写法
    EF写distinct
    服务的调试和安装
    EF写INNER JOIN 链接
    BZOJ 1825: [JSOI2010]蔬菜庆典
    P4171 [JSOI2010]满汉全席
    Educational Codeforces Round 71 (Rated for Div. 2) Solution
    P4292 [WC2010]重建计划
    P3724 [AH2017/HNOI2017]大佬
    P5504 [JSOI2011]柠檬
  • 原文地址:https://www.cnblogs.com/nightnine/p/11217483.html
Copyright © 2011-2022 走看看