C# 是否使用.NET检测只读域控制器?
我希望能够确定特定域控制器是否为只读。我知道我可以这样做来获得一个可写的DC:C# 是否使用.NET检测只读域控制器?,c#,active-directory,directoryservices,C#,Active Directory,Directoryservices,我希望能够确定特定域控制器是否为只读。我知道我可以这样做来获得一个可写的DC: using( Domain d = Domain.GetCurrentDomain() ) { DomainController dc = d.FindDomainController( "mysitename", LocatorOptions.WriteableRequired); } 但给定一个DomainController对象,有没有办法确定该DC是否可写 我询问的原因是,我想尝试
using( Domain d = Domain.GetCurrentDomain() )
{
DomainController dc = d.FindDomainController(
"mysitename", LocatorOptions.WriteableRequired);
}
但给定一个DomainController对象,有没有办法确定该DC是否可写
我询问的原因是,我想尝试选择一个首选的域控制器,即1。可写2。在我的网站和3。全球目录。要找到具有所有这些属性的服务器,似乎不是一个好方法。这并不优雅,但 如果您拥有DomainController对象,则可以执行以下操作:
bool isWritable = true;
try
{
using (Domain d = Domain.GetCurrentDomain())
var dc = d.FindDomainController(theDomainController.Name, LocatorOptions.WriteableRequired);
}
catch(ActiveDirectoryObjectNotFoundException)
{
isWritable = false;
}
这应该确定特定的域控制器是否可写。这并不优雅,但 如果您拥有DomainController对象,则可以执行以下操作:
bool isWritable = true;
try
{
using (Domain d = Domain.GetCurrentDomain())
var dc = d.FindDomainController(theDomainController.Name, LocatorOptions.WriteableRequired);
}
catch(ActiveDirectoryObjectNotFoundException)
{
isWritable = false;
}
这应确定特定域控制器是否可写。只读域控制器和可写域控制器之间的一个区别是,所有只读域控制器的属性
primaryGroupID
设置为521(这是Active Directory中“只读域控制器”内置组的RID)。可写域控制器的primaryGroupID
设置为516(“域控制器”组)
只读域控制器的主组无法轻松更改(Active Directory不允许)因此,您可以放心地假设所有RODC:s都将该属性设置为521。只读域控制器和可写域控制器之间的一个区别是,所有只读域控制器的属性
primaryGroupID
都设置为521(这是Active Directory中“只读域控制器”内置组的RID)。可写域控制器的primaryGroupID
设置为516(“域控制器”组)
只读域控制器的主组无法轻松更改(Active Directory不允许),因此您可以放心地假设所有RODC:s都将该属性设置为521。这不起作用。FindDomainController的第一个参数是要搜索的站点的名称,而不是域控制器主机名。如果您尝试该代码,它将为所有域控制器设置isWritable=false。这不起作用。FindDomainController的第一个参数是要搜索的站点的名称,而不是域控制器主机名。如果您尝试该代码,它将为所有域控制器设置isWritable=false。