2010-01-18 3 views
1

사용자에게 SeLoadDriver 권한이 있는지 확인하려고합니다.WIN API 사용자 권한 C++

PLUID pld; 
    LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld); 

을하지만 지금은 사용자가 권한을 가지고 여부되었다는 PLUID에서 부울을하는 방법을 잘 모르겠어요 : 나는 PLUID 있어요. 관련 방법을 읽었지만 PLUID 값에서 직접 가져 오는 쉬운 방법이라고 생각합니다.

감사합니다.

답변

3

다소 복잡합니다.

먼저 당신은 당신은 당신이 LookupPrivilegeValue()에서 얻을 LUID에 대한 (LUID_AND_ATTRIBUTES 구조체의 배열 인) 것과있어 버퍼를 스캔 (GetTokenInformation()를 호출하여) 프로세스 토큰의 권한을 설정 취득해야합니다. 그런 다음 찾은 LUID_AND_ATTRIBUTES을 사용하고 Attributes에 필요한 플래그 (사례에 SE_PRIVILEGE_ENABLED)가 포함되어 있는지 확인하십시오.

활성화 된 권한을 검사 할 때 검사중인 AttributesSE_PRIVILEGE_REMOVED이 설정되어 있지 않은지 확인해야합니다. SE_PRIVILEGE_REMOVEDSE_PRIVILEGE_ENABLED이있는 권한이 제거되었으며 사용할 수 없습니다.