「管理者として実行」されているかどうか確認する
OpenProcessToken()
で現在のプロセスに関連付けされているトークンを取得し、GetTokenInformation()
でそのトークンの情報を取得する。
GetTokenInformation()
の第2引数でユーザー情報やグループ情報など、取得する情報を指定する。
以下のコードは、現在のプロセスが「管理者」として実行されているか場合、true
を返す。
bool IsElevation()
{
auto token = HANDLE();
if( !OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &token ) )
return false;
auto elevation_type = TOKEN_ELEVATION_TYPE();
auto length = DWORD();
auto result = GetTokenInformation( token, TokenElevationType, &elevation_type, sizeof( elevation_type ), &length );
CloseHandle( token );
return !result ? false : elevation_type == TokenElevationTypeFull;
}