2009-07-22 25 views
1

首先我知道在这个主题上有很多帖子,但是我发现的所有信息都无助于我的情况。正在发生的事情是,我无法找到属性在AD中锁定用户的位置。我已经使用在Active Directory中找不到锁定的属性(C#)

link text

其他一切与AD和它所有的工作。然而,位图,如果一个帐户被锁定的userAccountControl的不会改变。试图访问lockoutTime会返回一个异常,说它找不到该属性。该远程工作的唯一的事情就是

user.InvokeGet(“IsAccountLocked”)

呼叫,但如果帐户被锁定或没有它总是返回false不管。

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

感谢

回答

3

如果您使用的是.NET 3.5,你应该使用UserPrincipal类的System.DirectoryServices.AccountManagement命名空间。这个类有一个IsAccountLockedOut()方法以及一个属性来获得AccountLockOutTime

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

谢谢许多。随着.NET 3.5,你如何解锁一个帐户? – 2009-07-22 17:10:06

0

如果你在.NET 2.0/3.0,您可以使用下面的代码,假设你有一个名为DirectoryEntryuser例如:

// 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; 

马克

相关问题