用户是否是用管理员权限运行本进程

来源:互联网 发布:淘宝优惠券网站制作 编辑:程序博客网 时间:2024/05/17 05:01
#include <windows.h>#include <ShlObj.h>#include <iostream>using namespace std;BOOL GetProcessElevation(TOKEN_ELEVATION_TYPE * pElevationType , BOOL * pIsAdmin){HANDLE hToken = NULL;DWORD dwSize;if ( !OpenProcessToken(GetCurrentProcess() , TOKEN_QUERY , &hToken) ){return FALSE;}BOOL bResult = FALSE;if ( GetTokenInformation(hToken , TokenElevationType , pElevationType , sizeof(TOKEN_ELEVATION_TYPE) , &dwSize) ){BYTE adminSID[SECURITY_MAX_SID_SIZE];dwSize = sizeof(adminSID);CreateWellKnownSid(WinBuiltinAdministratorsSid , NULL , &adminSID , &dwSize);if ( *pElevationType == TokenElevationTypeLimited ){HANDLE hUnfilteredToken = NULL;GetTokenInformation(hToken , TokenLinkedToken , (VOID*)hUnfilteredToken , sizeof(HANDLE) , &dwSize);if (CheckTokenMembership(hUnfilteredToken , &adminSID , pIsAdmin)){bResult = TRUE;}CloseHandle(hUnfilteredToken);}else{*pIsAdmin = IsUserAnAdmin();bResult = TRUE;}}CloseHandle(hToken);return bResult;}int _tmain(int argc, _TCHAR* argv[]){TOKEN_ELEVATION_TYPE t;BOOL isAdmin = FALSE;BOOL bRunRight = GetProcessElevation(&t , &isAdmin);if (bRunRight){if (isAdmin){cout<<"是管理员"<<endl;}else{cout<<"不是管理员"<<endl;}}system("pause");return 0;}

原创粉丝点击