PrivilegeNotHeldException при предоставлении привилегии - PullRequest
0 голосов
/ 28 октября 2019

Я создаю пользователя Windows с помощью программы и даю другому пользователю привилегию с LsaAddAccountRights . Среди прочего, привилегия «SeSecurityPrivilege», необходимая для получения информации ACL.

Это работает на множестве разных версий Windows: 7, 8.1x, 10.x, Сервер 2019. Моя программа запускается пользователемможет получить доступ к ACL файлов (с помощью C # FileInfo.GetAccessControl () ). Но это не сработало на Server 2008R2 и 2012R2. (ATM я не смог протестировать Server 2016). Все серверы являются контроллером домена. Проверка привилегий с помощью «whoami / priv» показывает, что SeSecurityPrivilege установлен на сервере 2019 (но отключен), но на другом сервере ни одна из привилегий не отображается.

Написание программы, запрашивающей привилегии с помощью LsaEnumerateAccountRights показывает, что у пользователя есть права. Проверка с помощью PrivilegeCheck показывает, что они все отключены - на всех серверах (даже 2019, где это работает).

Проверка групповой политики Показывает групповую политику на DC ,что политика назначена пользователю.

Где моя проблема? Почему это не работает на старой версии Сервера, а на новой?

1 Ответ

0 голосов
/ 28 октября 2019

Даже когда определенная учетная запись обладает данной привилегией, большинство процессов будет работать с отключенной привилегией. Используйте AdjustTokenPrivileges, чтобы включить привилегию для каждого отдельного процесса (в идеале вы должны активировать привилегию только на тот момент, когда она действительно необходима, а затем повторно отключить ее). Обратите внимание, что вы используете LookupPrivilegeValue для получения LUID, который идентифицирует привилегию для AdjustTokenPrivileges.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...