阻止Active Directory用户使用DirectoryServices更改其密码

时间:2010-02-03 12:56:36

标签: .net python active-directory

从脚本创建Active Directory用户时,我还需要设置他们无法更改密码的选项。通过管理GUI,可以通过选中“用户无法更改密码”轻松完成。然而,这是另一个故事。我发现了recipe涉及与ADSI COM API的交互,但由于技术原因,我想通过.NET API完成相同的操作(简短版本:我无法访问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 个答案:

答案 0 :(得分:1)

如果你可以使用.NET 3.5那里有一个名为System.DirectoryServices.AccountManagment的新命名空间。该命名空间中的UserPrincipal类只允许您通过将布尔UserCannotChangePassword属性设置为false来设置“无法更改密码”。