「管理者として実行」されているかどうか確認する

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;
}