在Active Directory中找不到Locked属性(C#)

首先,我知道有很多关于这个主题的post,但是我发现的所有信息对我的情况没有帮助。 发生的事情是我找不到属性在AD中锁定用户的位置。 我用过

链接文字

对于AD的所有其他内容,它已经全部工作了,如果帐户被锁定,userAccountControl的位图不会改变。 尝试访问lockoutTime会返回一个exception,说它无法找到该属性。 唯一远程工作的是

user.InvokeGet( “IsAccountLocked”)

呼叫,但无论帐户是否被锁定,它总是返回false。

如果有人有任何想法,那将是非常有帮助的,或者链接可能会帮助我。

谢谢

如果您使用的是.NET 3.5,则应使用System.DirectoryServices.AccountManagement命名空间中的UserPrincipal类。 此类具有IsAccountLockedOut()方法以及用于获取AccountLockOutTime的属性。

using (var context = new PrincipalContext( ContextType.Domain )) { using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, name )) { if (user.IsAccountLockedOut()) { ... your code here... } } } 

如果您使用的是.NET 2.0 / 3.0,则可以使用以下代码,假设您有一个名为userDirectoryEntry实例:

 // get the "userAccountControl" property int uac = Convert.ToInt32(user.Properties["userAccountControl"][0]); const int ADS_UF_ACCOUNTDISABLE = 0x00000002; const int ADS_UF_LOCKOUT = 0x00000010; bool accountIsDisabled = (uac & ADS_UF_ACCOUNTDISABLE) == ADS_UF_ACCOUNTDISABLE; bool accountIsLockedOut = (uac & ADS_UF_LOCKOUT) == ADS_UF_LOCKOUT;