1

msdn でこのリンクを見つけて、ユーザーが管理者かどうかを確認しました。プロセスが昇格したとき(管理者として実行されたとき)、一部のwin7マシンで正常に動作しましたが、動作していないマシン(2008年に勝ったもの)がいくつか見つかりました!これは正しい方法ですか??

BOOL IsUserAdmin(VOID)
{
  BOOL b;
  SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
  PSID AdministratorsGroup; 
  b = AllocateAndInitializeSid(
    &NtAuthority,
    2,
    SECURITY_BUILTIN_DOMAIN_RID,
    DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0,
    &AdministratorsGroup); 
  if(b) 
  {
    if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) 
    {
      b = FALSE;
    } 
  FreeSid(AdministratorsGroup); 
  }
  return(b);
}    
4

1 に答える 1

2

IsUserAnAdmin()上記の呼び出しのラッパーであるを使用できます

于 2012-08-29T13:59:35.230 に答える