// IsUserAdminTest.cpp : Defines the entry point for the console application. // #include <Windows.h> #include <tchar.h> #include <iostream> BOOL IsUserAdmin(); int _tmain(int argc, _TCHAR* argv[]) { printf_s("%d ",IsUserAdmin()); return 0; } BOOL IsUserAdmin() { BOOL b = FALSE; SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID AdministratorsGroup = NULL; b = AllocateAndInitializeSid( &NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup); if(b) { HANDLE hThreadUserToken = NULL; if (!::OpenThreadToken(::GetCurrentThread(), TOKEN_READ,//must have TOKEN_QUERY false, &hThreadUserToken)) { if (!CheckTokenMembership( hThreadUserToken, AdministratorsGroup, &b)) { b = FALSE; } if (AdministratorsGroup) { FreeSid(AdministratorsGroup); } } if (hThreadUserToken) { CloseHandle(hThreadUserToken); } } return(b); }