При создании пользователей 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()
Буду очень признателен за любую помощь:)