실제로 올바른 비트를 적절한 값으로 설정하려면 비트 연산을 수행해야합니다. 아래 링크에서 사용자 계정 컨트롤 플래그가 표시됩니다. 따라서 계정을 잠 그거나 잠금 해제하려면 속성에 대해 적절한 논리 연산을 수행하기 만하면됩니다.
다음 링크는 관심있어 할 것입니다.
How to (almost) everything in AD
나중에에 샘플 코드를 C# 코드를 추가해야한다.
다음 코드는 제안이다 :
public class AdUser {
private int _userAccountControl
public bool IsLocked {
get {
return _userAccountControl & UserAccountControls.Lock
} set {
if(value)
_userAccountControl = _userAccountControl | UserAccountControls.Lock
else
// Must reverse all the bits in the filter when performing an And operation
_userAccountControl = _userAccountControl & ~UserAccountControls.Lock
}
}
public enum UserAccountControls {
Lock = 0x10
}
}
아마도 내가 그것을 테스트하지 않았습니다,이 코드를 만들기 위해 몇 가지 변화를 고려해주십시오. 그러나 사용자 계정을 잠금 및 잠금 해제하는 것과 마찬가지로 코드가 비슷하거나 비슷해야합니다. 조만간 DirectoryEntry.Properties []를 사용하여 객체 클래스의 값으로 설정해야합니다.
편집
Active Directory 계정을 잠글 선호하는 방법은 무엇입니까?
int val = (int)directoryentry.Properties["userAccountControl"].Value;
directoryentry.Properties["userAccountControl"].Value = val | 0x0010;
내 편집에 넣어 귀하의 질문에 대한 응답으로 대
directoryentry.InvokeSet("IsAccountLocked", true);
, 나는이 내가 알고 적어도, 가장 간단한 방법은 있다고 말할 것입니다. 내가 염려하는 한 내가 코드 샘플에서했던 것처럼 코드를 감싸는 것을 선호하므로 다른 프로그래머는 비트 연산 등을 신경 쓰지 않아도된다. 그 (것)들을 위해, 그들은 목표를 조작하고있다.
이 두 가지 방법 중 가장 좋은 방법은 주로 선호도 문제입니다. 당신이 논리적 인 작업을 쉽게한다면, 일반적으로 선호됩니다. 그러나 비교해 보면, 두 번째 선택은 더 간단합니다.
+1 나는 DirectoryEntry.InvokeSet() 메소드를 배웠다. 감사! =) –