簡體   English   中英

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

[英]How can I tell if my program is running on a Domain Controller?

使用C#有一種方法可以判斷我的程序運行的計算機是否是域控制器?

更短的解決方案,只需檢查注冊表:

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

枚舉DC( 此處的代碼段) - 在結果列表中檢查您的服務器名稱:

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

這是我想出的一個完整的功能,回答這個問題。

    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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM