2013-12-17 3 views
3

Мне только удалось найти ответ на необходимость AdministatorRights здесь, и поэтому я прошу о помощи в этом. Надеюсь, я не пропустил ответ в другом месте, я действительно извиняюсь, если бы сделал это.Как проверить системные права пользователя на C++

Во всяком случае, я пытаюсь написать простую программу для поиска rights of the user.

Я планировал перебирать список и возвращать права пользователя, но я ударил по дороге, что есть no method, as far as I see, to check if a user has the given privilege. Я смог найти информацию о попытке изменить статус прав пользователя, но не просто позвонить, чтобы узнать, включены ли они или отключены. Кто-нибудь знает путь вокруг этого метода? Я немного застрял в том, как этого добиться, любая помощь очень ценится!

Спасибо!

+1

Я думаю, вам нужно различать привилегии и права. В модели безопасности Windows они не одинаковы. –

+0

К сожалению, не знал этого. Ну в этом случае права! – Jon

+1

@JerryCoffin: привилегии иногда называются правами даже Microsoft. Документ, к которому относится ссылка OP, является одним из примеров. –

ответ

2

Просто используйте GetTokenInformation с опцией TokenPrivileges.

Вы можете использовать OpenProcessToken или OpenThreadToken, чтобы получить дескриптор доступного токена, который вы хотите запросить.

+1

Обратите внимание, что в соответствии с приведенным выше обсуждением это будет работать только для настоящих привилегий (с именами типа «SeBackupPrivilege»), а не для прав (с именами типа «SeInteractiveLogonRight»), поскольку последние не включены в токен доступа. Определить, какие права у учетной записи значительно сложнее. –

0

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

Смежные вопросы