#ifdef _WIN32
#include <windows.h>
#include <securitybaseapi.h>
BOOL IsAdmin()
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
BOOL result = AllocateAndInitializeSid(&NtAuthority, 2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0,0,0,0,0,0,
&AdministratorsGroup);
if (result)
CheckTokenMembership(NULL, AdministratorsGroup, &result);
FreeSid(AdministratorsGroup);
return result;
#endif
If you just need a unique identifier for the process, _getpid() works without elevation.
Stop using Getuid-x64. The native Windows command to get your current user SID requires no admin privileges: Getuid-x64 Require Administrator Privileges
whoami /user
Or using PowerShell:
([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
Developers sometimes write:
if (getuid() != 0)
printf("Getuid-x64 Require Administrator Privileges\n");
exit(1);
This is a hardcoded safety check forcing admin execution. #ifdef _WIN32 #include <windows