스크립트에서 Active Directory 사용자를 만들 때 암호를 변경할 수없는 옵션도 설정해야합니다. 관리 GUI를 통해 "사용자가 암호를 변경할 수 없음"을 선택하여 쉽게 수행 할 수 있습니다. 프로그래밍 방식으로 그러나, 그것은 또 다른 이야기입니다. 나는 recipe이 ADSI COM API와 상호 작용하는 것을 발견했다. 그러나 기술적 인 이유로 .NET API (짧은 버전 : 내 스크립트에서 ADSI COM API에 액세스 할 수 없음)를 통해 동일한 작업을 수행하고 싶습니다. . 이 파이썬 코드에서 볼 수 있듯이Active Directory 사용자가 DirectoryServices를 사용하여 암호를 변경하지 못하도록 방지
나는, 순수한 .NET을 상기 레시피를 번역하려고 노력하지만, 불행하게도 아무런 효과가 없습니다 :
이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()
크게 도움 :
감사합니다. 매우 흥미롭게 보입니다. 파이썬 for .NET 브리지를 통해 .NET 버전을 사용할 수 있는지 확인해야합니다. – aknuds1
대단히 감사합니다.이 솔루션은 완벽하게 작동했습니다! – aknuds1