2013-10-31 2 views
0

새내기 .Net 4.0. 나는 "sAMAccount ="보다는 "CN ="사용하여 사용자를 가리키는입니다 있도록C# 활성 디렉토리 사용자 찾기 (sAMAccount)

DirectoryEntry de = new DirectoryEntry("myLdapString"); 

DirectoryEntry ChgPwd = de.Children.Find("CN=" + "myuserid", "user"); 

ChgPwd.Invoke("SetPassword", new object[] { "newPWD" }); 

ChgPwd.CommitChanges(); 

내가이를 변경하려면 :
우리는 현재 다음 코드를 사용하여 사용자 암호를 다시 설정하는 스크립트가 있습니다. 하지만 위의 Find 문자열에서 변경하면 작동하지 않습니다. 이 변경에 대한 적절한 구문을 누군가 도울 수 있습니까? 감사합니다

+2

같은

코드는 실제로'sAMAccountName'라는 속성이 아닌가? –

+0

CN은 일반적으로 표시 이름 (예 : '호머 심슨')이지만 sAMAccountName은 로그인 이름입니다 (예 : '심슨'). 어쩌면 그게 문제 야? – RobSiklos

+0

예 본인의 예에서 속성을 typed합니다. 나는 "sAMAccountName ="코드에 있지만 작동하지 않습니다. – dev

답변

3

당신은 System.DirectoryServices.AccountManagement 네임 스페이스를 사용하여 acitve 디렉토리 계정을 관리 할 수 ​​있습니다.

using(PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, 
      TargetDomain, 
      TargetDomainUserName, 
      TargetDomainPassword)) 
using(var userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, "somaloginname")) 
{ 
userPrincipal.SetPassword(newPassword); 
//or userPrincipal.ChangePassword 
      userPrincipal.Save(); 
      } 

MSDN:UserPrincipal Class