在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,则可以使用以下代码,假设您有一个名为user
的DirectoryEntry
实例:
// 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;
渣