查询用户是否在 Active Directory 中检查了 "Cannot change password"
Query if user has "Cannot change password" checked in Active Directory
我正在尝试检查我正在开发的应用程序的信息...
我正在尝试查询 userAccountControl,但我发现如果已设置,AD 不会正确更新它。
这是我目前搜索 UserAccountControl 的方式
If (res.Properties.Contains("userAccountControl")) Then
userAccountControl = doespasswordexpire(res.Properties("userAccountControl").Item(0))
userAccountControlPNR = PasswordNotRequired(res.Properties("userAccountControl").Item(0))
userAccountControlSCR = SmartCardRequired(res.Properties("userAccountControl").Item(0))
Else
userAccountControl = ""
userAccountControlPNR = ""
userAccountControlSCR = ""
End If
我如何在 ADSI 或 LDAP 中执行此操作?我不想使用 PrincipalContext。
您不能使用 userAccountControl
属性修改甚至查询 "cannot change password" 设置。它在 Microsoft 的文档中被列为可能的标志,但它不起作用(不确定它是否曾经打算这样做?)。
要检查是否已设置,您必须在用户的 DACL 中解析出用户的 ACE。您可以从用户的 ntSecurityDescriptor
属性中获取它并以编程方式解析它。 this thread.
中有一个很好的例子
这里有一些额外的 MSDN 信息:https://msdn.microsoft.com/en-us/library/aa746398.aspx
我正在尝试检查我正在开发的应用程序的信息...
我正在尝试查询 userAccountControl,但我发现如果已设置,AD 不会正确更新它。
这是我目前搜索 UserAccountControl 的方式
If (res.Properties.Contains("userAccountControl")) Then
userAccountControl = doespasswordexpire(res.Properties("userAccountControl").Item(0))
userAccountControlPNR = PasswordNotRequired(res.Properties("userAccountControl").Item(0))
userAccountControlSCR = SmartCardRequired(res.Properties("userAccountControl").Item(0))
Else
userAccountControl = ""
userAccountControlPNR = ""
userAccountControlSCR = ""
End If
我如何在 ADSI 或 LDAP 中执行此操作?我不想使用 PrincipalContext。
您不能使用 userAccountControl
属性修改甚至查询 "cannot change password" 设置。它在 Microsoft 的文档中被列为可能的标志,但它不起作用(不确定它是否曾经打算这样做?)。
要检查是否已设置,您必须在用户的 DACL 中解析出用户的 ACE。您可以从用户的 ntSecurityDescriptor
属性中获取它并以编程方式解析它。 this thread.
这里有一些额外的 MSDN 信息:https://msdn.microsoft.com/en-us/library/aa746398.aspx