使用C#,如何判断我的代码运行的计算机是否为域控制器。
我不想“出去”收集有关域中其他域控制器的信息……我只关心我的代码运行的机器是否是域控制器。此外,我不需要知道它是否是主域控制器……只需要知道它是否是域控制器。
以下是我尝试过的方法:
尝试1:
private bool IsDomainController()
{
Domain domain = Domain.GetCurrentDomain();
string domainName = domain.ToString();
bool bIsDC = false;
DirectoryContext ctx = new DirectoryContext(DirectoryContextType.Domain, domainName);
try
{
using (DomainController dc = DomainController.FindOne(ctx, LocatorOptions.ForceRediscovery))
{
bIsDC = true;
}
}
catch (Exception)
{
bIsDC = false;
}
return bIsDC;
}
and
TRIAL 2
public bool IsThisMachineIsADomainController()
{
Domain domain = Domain.GetCurrentDomain();
string thisMachine = String.Format("{0}.{1}", Environment.MachineName, domain.ToString());
thisMachine = thisMachine.ToLower();
//Enumerate Domain Controllers
List<string> allDcs = new List<string>();
string name = "";
foreach (DomainController dc in domain.DomainControllers)
{
name = dc.Name.ToLower();
allDcs.Add(name);
}
return allDcs.Contains(thisMachine);
}
这两个选项都合适吗?为什么合适或不合适?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager
,而似乎在2012年它们在这里:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager\ServicingStorage\ServerComponentCache
。 - xDaevax