2010-09-29 90 views

回答

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

希望他不是在談論.NET 1.x.如果是這樣的話,我希望你用列表替換ArrayList。 – Bryan 2010-09-29 21:01:21

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

相關問題