• 得到程序当前UAC的执行权限,高 中 低


     1 DWORD GetIntegrityLevel() 
     2 { 
     3  DWORD Result = 0;
     4  if(!IsVista()) return Result;
     5  HANDLE hToken; 
     6  HANDLE hProcess;
     7  DWORD dwLengthNeeded; 
     8  DWORD dwError = ERROR_SUCCESS;
     9  PTOKEN_MANDATORY_LABEL pTIL = NULL; 
    10  DWORD dwIntegrityLevel;
    11  hProcess = GetCurrentProcess(); 
    12  if (OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_QUERY_SOURCE, &hToken))  
    13  { 
    14   if (!GetTokenInformation(hToken, (::TOKEN_INFORMATION_CLASS)TokenIntegrityLevel, NULL, 0, &dwLengthNeeded)) 
    15   { 
    16    dwError = GetLastError(); 
    17    if (dwError == ERROR_INSUFFICIENT_BUFFER) 
    18    { 
    19     pTIL = (PTOKEN_MANDATORY_LABEL)LocalAlloc(0, dwLengthNeeded); 
    20     if (pTIL != NULL) 
    21     { 
    22      if (GetTokenInformation(hToken, (::TOKEN_INFORMATION_CLASS)TokenIntegrityLevel, pTIL, dwLengthNeeded, &dwLengthNeeded)) 
    23      { 
    24       dwIntegrityLevel = *GetSidSubAuthority(pTIL->Label.Sid,  
    25        (DWORD)(UCHAR)(*GetSidSubAuthorityCount(pTIL->Label.Sid)-1));
    26       if (dwIntegrityLevel < SECURITY_MANDATORY_MEDIUM_RID) 
    27       { 
    28        Result = IL_LOW;          
    29         MessageBox(0,"low","low",MB_OK);
    30       } 
    31       else if (dwIntegrityLevel >= SECURITY_MANDATORY_MEDIUM_RID &&  
    32        dwIntegrityLevel < SECURITY_MANDATORY_HIGH_RID) 
    33       { 
    34        Result = IL_MEDIUM; 
    35         MessageBox(0,"MEDIUM","MEDIUM",MB_OK);
    36       } 
    37       else if (dwIntegrityLevel >= SECURITY_MANDATORY_HIGH_RID) 
    38       { 
    39        Result = IL_HIGH; 
    40         MessageBox(0,"HIGH","HIGH",MB_OK);
    41       } 
    42      }
    43      LocalFree(pTIL); 
    44     } 
    45    } 
    46   } 
    47   CloseHandle(hToken); 
    48  }
    49  return Result; 
    50 }
  • 相关阅读:
    c++Primer再学习(1)
    c++Primer再学习练习Todo
    感悟(一)
    新目标《C++程序设计原理与实践》
    C++Primer再学习(4)
    开篇
    C++Primer再学习(3)
    C++实现的单例模式的解惑
    使用springboot缓存图片
    springboot h2 database
  • 原文地址:https://www.cnblogs.com/FCoding/p/2560510.html
Copyright © 2020-2023  润新知