2012-08-29 4 views
1

msydn에이 link이 있는데 사용자가 admin인지 확인했습니다. 프로세스가 승격되면 (관리자로 실행) 일부 win7 시스템에서는 정상적으로 작동하지만 일부 시스템은 작동하지 않습니다 (일부는 2008 년 획득). 이것이 올바른 방법인가요?사용자가 Windows 7에서 관리자인지 확인하는 방법은 무엇입니까?

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); 
}  
+0

이 답이 될 수있는 비슷한 질문입니다 위의 호출에 대한 래퍼입니다 IsUserAnAdmin()를 사용할 수 있습니다. 는 http://stackoverflow.com/questions/8139480/c-console-application-prompt-run-as-admin-to-run-as-administrator –

+1

"작동하지 않는"도움이되지 않습니다. 더 구체적으로 말하십시오. – tenfour

+0

사실, @ Jordi. 그 질문은 운영 체제에 관리자로 프로그램을 실행하도록 요청하는 것입니다. 이 질문은 프로그램이 이미 관리자로 실행 중인지 여부를 확인하는 것입니다. –

답변

2

당신은

+1

OS 지원이 제한되어 있습니다. [MSDN 권장] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb776463(v=vs.85)asp.aspx) ChecktokenMembership. – acraig5075

+0

물론 당신은 맞습니다. 위의 코드는 MSDN 샘플이며, 정확성을 요구합니다. 따라서 시스템 제공 API를 사용하여 확인할 수 있습니다. 감사합니다 참고 – BigBoss

+0

이것은 권장하지 않습니다 msdn 당 – ashmish2