如何判断我的程序是否在域控制器上运行?

时间:2010-09-29 20:51:24

标签: c#

使用C#可以判断我的程序运行的计算机是否是域控制器?

3 个答案:

答案 0 :(得分:2)

更短的解决方案,只需检查注册表:

const string basename = "HKEY_LOCAL_MACHINE\\";    
const string keyname = "SYSTEM\\CurrentControlSet\\Control\\ProductOptions";
string result = (string) Registry.GetValue(basename + keyname, "ProductType", "WinNT");

如果结果为" WinNT "它是一台客户端机器。如果它是" ServerNT ",服务器和" LanmanNT "是一个域控制器。

更多信息:https://technet.microsoft.com/en-us/library/cc782360%28v=ws.10%29.aspx

答案 1 :(得分:1)

枚举DC(here下面的代码段) - 在结果列表中检查您的服务器名称:

public static ArrayList EnumerateDomainControllers()
{
    ArrayList alDcs = new ArrayList();
    Domain domain = Domain.GetCurrentDomain();
    foreach (DomainController dc in domain.DomainControllers)
    {
        alDcs.Add(dc.Name);
    }
    return alDcs;
}

答案 2 :(得分:0)

这是我提出的完整功能,以回答这个问题。

    public static bool ThisMachineIsADomainController()
    {
        Domain domain = Domain.GetCurrentDomain();

        string thisMachine = String.Format("{0}.{1}",Environment.MachineName, domain.ToString());
        //Enumerate Domain Controllers
        List<string> allDcs = new List<string>();

        foreach (DomainController dc in domain.DomainControllers)
        {
            allDcs.Add(dc.Name);
        }
        return allDcs.Contains(thisMachine);
    }