2009-06-10 4 views
1

특정 도메인 컨트롤러가 읽기 전용인지 여부를 확인할 수 있어야합니다..NET에서 읽기 전용 도메인 컨트롤러를 검색합니까?

using(Domain d = Domain.GetCurrentDomain()) 
{ 
    DomainController dc = d.FindDomainController(
     "mysitename", LocatorOptions.WriteableRequired); 
} 

그러나 DC가 쓰기입니다 여부를 확인하는 방법이있는 DomainController 선택 객체를 지정해 : 나는 쓰기 가능한 DC를 얻기 위해이 같은 물건을 할 수있어?

내가 원하는 이유는 1. 선호 도메인 컨트롤러를 선택하려고 시도한다는 것입니다. 쓰기 가능 2. 내 사이트 및 3. 글로벌 카탈로그. 이러한 모든 특성을 가진 서버를 찾는 좋은 방법은없는 것 같습니다.

답변

5

읽기 전용 도메인 컨트롤러와 쓰기 가능한 도메인 컨트롤러 간의 차이점 중 하나는 모든 읽기 전용 도메인 컨트롤러의 특성이 primaryGroupID이 521 (Active Directory의 "읽기 전용 도메인 컨트롤러"기본 제공 그룹의 RID)로 설정되어 있다는 것입니다). 쓰기 가능한 도메인 컨트롤러는 primaryGroupID이 516 ("도메인 컨트롤러"그룹)으로 설정되어 있습니다.

읽기 전용 도메인 컨트롤러의 주 그룹은 쉽게 (Active Directory가 그것을 허용하지 않습니다) 변경할 수 없습니다 그래서 당신은 모든 RODC가 있다고 가정하는 것이 안전해야한다 : s는 그 속성이 521

0

그것은

... 우아한 아니지만, 당신이에 DomainController 개체가있는 경우, 당신은 할 수 있습니다 :

bool isWritable = true; 
try 
{ 
    using (Domain d = Domain.GetCurrentDomain()) 
     var dc = d.FindDomainController(theDomainController.Name, LocatorOptions.WriteableRequired); 
} 
catch(ActiveDirectoryObjectNotFoundException) 
{ 
    isWritable = false; 
} 

이 특정 도메인 컨트롤러가 쓰기 가능 여부를 결정해야합니다.

+0

로 설정했는지 작동하지 않습니다. FindDomainController의 첫 번째 매개 변수는 도메인 컨트롤러 호스트 이름이 아닌 검색 할 사이트의 이름입니다. 이 코드를 시도하면 모든 도메인 컨트롤러에 대해 isWritable = false가 설정됩니다. – Skrymsli