WIN API User Privilege C ++ - PullRequest
       12

WIN API User Privilege C ++

1 голос
/ 18 января 2010

Я пытаюсь проверить, есть ли у пользователя привилегия SeLoadDriver.У меня есть PLUID:

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

Но теперь я не уверен, как получить bool из PLUID, утверждая, что пользователь имеет или нет привилегию.Я читал соответствующие методы, но думаю, что это может быть простой способ получить это непосредственно из значения PLUID.

Спасибо

1 Ответ

3 голосов
/ 18 января 2010

Это немного сложнее, чем это.

Сначала вам нужно получить набор привилегий токена процесса (вызвав GetTokenInformation()), затем вы сканируете буфер, полученный из этого (которыймассив LUID_AND_ATTRIBUTES структур) для LUID, который вы получаете от LookupPrivilegeValue().Затем вы можете использовать найденный вами LUID_AND_ATTRIBUTES и проверить, содержит ли Attributes требуемый флаг (SE_PRIVILEGE_ENABLED в вашем случае).

Имейте в виду, что когда вы проверяете активированную привилегию, вы должны также проверить, что SE_PRIVILEGE_REMOVED НЕ установлено в Attributes, который вы проверяете;привилегия с SE_PRIVILEGE_REMOVED и SE_PRIVILEGE_ENABLED была удалена и НЕ включена ...

...