2012-06-14 1 views
4

내 코드입니다 :"만료되지 않도록"Windows/AD 암호를 설정 하시겠습니까? 여기

using (DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")) 
{ 
    DirectoryEntry NewUser = AD.Children.Add(username, "user"); 
    string password = username + "123"; 
    NewUser.Invoke("SetPassword", new object[] { password }); 
    NewUser.CommitChanges(); 
    NewUser.Close(); 
    DirectoryEntry grp; 
    grp = AD.Children.Find(groupname, "group"); 
    if (grp != null) 
    { 
     grp.Invoke("Add", new object[] { NewUser.Path.ToString() }); 
    } 
} 

그리고 내가하고 싶은, 을 윈도우 사용자를 생성하지 않고 설정 한 암호를 결코 만료하는 것입니다하지만 난이 작업을 수행하는 방법을 몰라? 나는 당신이 경우 당신이 "UserFlags"대신 userAccountControl의

+0

쿼리하는 방법에 대한이 질문을 확인하십시오, 당신에게 몇 가지 단서를 제공해야합니다 : http://stackoverflow.com/questions/7246945/active-directory-check-if-password-never-expires –

답변

3

* .NET 3.5 이상에서는 System.DirectoryServices.AccountManagement (S.DS.AM) 네임 스페이스를 확인해야합니다. 여기에 대한 모든 읽기 :

, 당신은 기계 컨텍스트를 정의하고 쉽게 로컬 서버에 새 사용자를 만들 수 있습니다

// set up machine-level context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Machine)) 
{ 
    // create new user 
    UserPrincipal newUser = new UserPrincipal(ctx); 

    // set some properties 
    newUser.SamAccountName = "Sam"; 
    newUser.DisplayName = "Sam Doe"; 

    // define new user to be enabled and password never expires 
    newUser.Enabled = true; 
    newUser.PasswordNeverExpires = true; 

    // save new user 
    newUser.Save(); 
} 

새를 S.DS.AM은 광고에서 사용자 및 그룹과 함께 놀기가 정말 쉽습니다!

+0

나는 시도했다. ,하지만 작동하지 않습니다; 방법 구매, OS 시스템은 Windows Server 2003입니까? 그게 그렇게 중요한 건가? – Leslie

+0

미안, NewUser.Properties [ "userAccountControl"]. 값을 얻을 때 응용 프로그램이 System.NullReferenceException을 던졌습니다 .... – Leslie

+0

"userAccountControl"대신 "userFlags"라는 로컬 계정이 있다고 생각합니다. 도메인 계정) – bkr

5

를 사용하는 거라고 생각

: 로컬 계정에 대한

int NON_EXPIRE_FLAG = 0x10000; 
val = (int) NewUser.Properties["userAccountControl"].Value; 
NewUser.Properties["userAccountControl"].Value = val | NON_EXPIRE_FLAG; 
NewUser.CommitChanges(); 

: 도메인 계정의

편집

관련 문제