进程权限有关

来源:互联网 发布:ftp 自定义端口 编辑:程序博客网 时间:2024/06/06 05:11
BOOL GetProcessElevation(TOKEN_ELEVATION_TYPE * pElevationType, BOOL *pIsAdmin){HANDLE hToken = nullptr;DWORD dwSize;if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)){return FALSE;}BOOL bResult = FALSE;if (GetTokenInformation(hToken,TokenElevationType, pElevationType, sizeof(TOKEN_ELEVATION_TYPE),&dwSize)){if (*pElevationType == TokenElevationTypeLimited){//获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。HANDLE hUnfilteredToken = nullptr;GetTokenInformation(hToken, TokenLinkedToken, (void*)&hUnfilteredToken, sizeof(HANDLE), &dwSize);//创建一个管理员组的SID。BYTE adminSID[SECURITY_MAX_SID_SIZE];dwSize = sizeof(adminSID);CreateWellKnownSid(WinBuiltinAdministratorsSid, nullptr, &adminSID, &dwSize);//检查一个令牌的权限组。if (CheckTokenMembership(hUnfilteredToken, &adminSID, pIsAdmin)){bResult = TRUE;}}else{//Tests whether the current user is a member of the Administrator's group.*pIsAdmin = IsUserAnAdmin();bResult = TRUE;}}CloseHandle(hToken);return bResult;}

0 0
原创粉丝点击