2009-07-22 20 views
1

最初にこのトピックに関する記事が多数ありましたが、私が見つけたすべての情報は自分の状況に役立ちません。何が起こっているのは、ADのユーザーをロックアウトするためのプロパティがどこにあるのかわかりません。私はADと他のすべてのためにActive Directoryでロックされたプロパティが見つかりません(C#)

link text

を使用しているし、それはすべて、しかし、アカウントがロックアウトされている場合でuserAccountControlが変化しないビットマップを取り組んできました。 lockoutTimeにアクセスしようとすると、プロパティを見つけることができないという例外が返されます。リモートで動作する唯一のものは

user.InvokeGet(「IsAccountLocked」)

呼び出しですが、アカウントがロックされているかどうか、それは関係なく常にインクルードfalseを返します。

誰かが何か考えているのであれば、とても助けになるか、私を助けるかもしれないリンクです。

おかげ

答えて

3

は、.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... 
      } 
    } 
} 
+0

は非常にありがとう多く。 .NET 3.5では、どのようにしてアカウントをロック解除できますか? –

+0

UserPrincipalオブジェクトにUnlockAccount()メソッドがあります。http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.authenticableprincipal.unlockaccount.aspx – tvanfosson

+0

PrincipalContextをグローバルカタログにできますか? –

0

は、.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; 

マルク・

関連する問題