C\#를 사용 하여 WindowAD 를 조작 하 는 Windows 사용자
public void CreateWindowsUser(String userName,String password,String userDesc,int userControl)
{
String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
ladpRoot.Username = "XXXXX";
ladpRoot.Password = "XXXXX";
DirectoryEntry user = ladpRoot.Children.Add("CN="+ userName, "user");
user.Properties["sAMAccountName"].Value = userName;
user.Properties["description"].Value = userDesc;
user.Properties["userAccountControl"].Value = userControl;
user.CommitChanges();
user.Invoke("SetPassword", password);
user.CommitChanges();
user.Close();
}
상술 한 방법 은 윈도 우즈 사용 자 를 추가 하 는 것 을 간단하게 실현 했다.주의해 야 할 것 은 프로그램 이 역 제어 위 에 놓 여 실행 된다 면,ladpRoot.Username 과 ladpRoot.Password 는 값 을 부여 할 수 없다 는 것 이다.또한 ladpRootPath 는 ladp 의 경로 쓰기 입 니 다.LDAP:/192.168.213.168 은 호스트 주 소 를 표시 합 니 다. DC=pk1,DC=cctv,DC=com 은 작 동 할 윈도 영역 을,CN=Users 는 윈도 우즈 영역의 홈 디 렉 터 리 에 있 는 Users 용기 대상 을 표시 합 니 다.방법 매개 변수 userControl 은 일부 사용자 속성 을 표시 합 니 다.예 를 들 어 암호 가 만 료 되 지 않 고 사용 자 를 사용 하지 않 는 등 구체 적 인 값 은 상세 합 니 다.http://support.microsoft.com/kb/305144/zh-cn사용자 가 여러 속성 을 포함 하고 있다 면 이 속성 값 을 위치 나(|)에 따라 연산 하면 됩 니 다.이 사용자 속성 중 하 나 는 예외 입 니 다.바로 PASSWD 입 니 다.CANT_CHANGE,이 속성 은 사용자 가 비밀 번 호 를 수정 할 수 없다 는 것 을 나타 낸다.그러나 그 는 읽 기 전용 속성 이다.즉,userAccountControl 설정 을 통 해 기능 을 실현 할 수 없다.이 기능 을 실현 하려 면 상기 코드 user.close()에 있어 야 한다.다음 코드 를 삽입 하기 전에:
Guid changePasswordGuid = new Guid("{ab721a53-1e2f-11d0-9819-00aa0040529b}");
IdentityReference selfSddl = new SecurityIdentifier(WellKnownSidType.SelfSid, null);
IdentityReference everyoneSddl = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
ActiveDirectoryAccessRule selfAccRule = new ActiveDirectoryAccessRule(selfSddl, ActiveDirectoryRights.ExtendedRight, AccessControlType.Deny, changePasswordGuid);
ActiveDirectoryAccessRule everyoneAccRule = new ActiveDirectoryAccessRule(everyoneSddl, ActiveDirectoryRights.ExtendedRight, AccessControlType.Deny, changePasswordGuid);
user.ObjectSecurity.AddAccessRule(selfAccRule);
user.ObjectSecurity.AddAccessRule(everyoneAccRule);
user.CommitChanges();
다음은 자주 사용 하 는 사용자 조작 코드 를 보 여 줍 니 다.
사용자 수정:
public void ModifyWindowsUser(String userName,String password,String userDesc,int userControl)
{
String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
ladpRoot.Username = "XXXXX";
ladpRoot.Password = "XXXXX";
DirectoryEntry user = ladpRoot.Children.Find("CN=" +userName, "user");
user.Properties["description"].Value = userDesc;
user.Properties["userAccountControl"].Value = userControl;
user.CommitChanges();
user.Invoke("SetPassword", password);
user.CommitChanges();
user.Close();
}
사용자 삭제
public void DeleteWindowsUser(String userName)
{
String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
ladpRoot.Username = "XXXXX";
ladpRoot.Password = "XXXXX";
DirectoryEntry user = ladpRoot.Children.Find("CN=" +userName, "user");
user.DeleteTree();
user.Close();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.