Запрещение пользователю Active Directory изменять свой пароль с помощью DirectoryServices - PullRequest
0 голосов
/ 03 февраля 2010

При создании пользователей Active Directory из скрипта мне также нужно установить опцию, чтобы они не могли менять свои пароли. Через административный интерфейс это легко сделать, установив флажок «Пользователь не может сменить пароль». Программно, однако, это другая история. Я нашел рецепт , который предполагает взаимодействие с API-интерфейсом ADSI COM, но по техническим причинам я хотел бы добиться того же с помощью API .NET (короткая версия: я не могу получить доступ к ADSI COM API из моего скрипта).

Я попытался перевести вышеупомянутый рецепт на чистый .NET, как видно из этого фрагмента Python, но, к сожалению, он не действует:

dir_entry = System.DirectoryServices.DirectoryEntry(ad_user)
obj_sec = dir_entry.ObjectSecurity
# Password GUID
guid = System.Guid(System.String("ab721a53-1e2f-11d0-9819-00aa0040529b"))
for identity in (r"NT AUTHORITY\SELF", "EVERYONE"):
    identity = System.Security.Principal.NTAccount(identity)
    access_rule = System.DirectoryServices.ActiveDirectoryAccessRule(
            identity,
            System.DirectoryServices.ActiveDirectoryRights.ExtendedRight,
            System.Security.AccessControl.AccessControlType.Deny,
            guid
            )
    obj_sec.AddAccessRule(access_rule)
dir_entry.ObjectSecurity = obj_sec
dir_entry.CommitChanges()

Буду очень признателен за любую помощь:)

1 Ответ

1 голос
/ 03 февраля 2010

Если вы можете использовать .NET 3.5, там будет новое пространство имен под названием System.DirectoryServices.AccountManagment. Класс UserPrincipal в этом пространстве имен позволит вам установить «Cannot Change Password», просто установив для логического свойства UserCannotChangePassword значение false.

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