2008-09-26 37 views

回答

2

一種方式是查詢LOGONSERVER環境變量。這將給你的AD控制器的服務器名稱......據我所知,如果它當前沒有登錄到域,它將是空白的(或匹配當前的工作站?不確定)。

實例應用:

string ADServer = Environment.GetEnvironmentVariable("LOGONSERVER"); 
+2

如果電腦不是任何域的一部分,它也將是一個機器名稱 – 2011-08-26 16:31:46

7

嘗試讓Environment.UserDomainName並將其與Environment.MachineName。如果兩者相同,那麼用戶可能沒有域名。如果它們不相同,則用戶登錄到必須具有目錄服務器的域。

1

http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.path.aspx

要使用LDAP綁定到當前域,使用路徑「LDAP:// RootDSE的」,然後得到默認命名上下文和重新綁定條目。

因此,如果沒有域,綁定到「LDAP:// RootDSE」應該失敗或不返回任何內容。我沒有爲自己嘗試。

use System.DirectoryServices; // add reference to system.directoryservices.dll 

... 

DirectoryEntry ent = new DirectoryEntry("LDAP://RootDSE"); 
String str = ent.Properties["defaultNamingContext"][0]; 
DirectoryEntry domain = new DirectoryEntry("LDAP://" + str); 

這絕對是檢查不是依賴於環境變量(用戶可以刪除或添加欺騙程序)的Active Directory的更清潔的方式。

+1

+1 This works,thank you。唯一的問題是,當機器不是域成員時,它會在拋出COMException之前等待大約5秒鐘。因此,最好先調用Domain.GetComputerDomain()或IPGlobalProperties.GetIPGlobalProperties()。DomainName,如果成功,則執行此操作。 – EMP 2012-05-26 09:19:26

4

此代碼將檢查計算機本身就是一個域

using System.DirectoryServices.ActiveDirectory; 


bool isDomain = false; 

try 
{ 
    Domain.GetComputerDomain(); 
    isDomain = true; 
} 
catch (ActiveDirectoryObjectNotFoundException) 
{ 
} 

但是計算機可以在一個域的成員,但在當前登錄的用戶可以是本地用戶帳戶。如果要檢查這個使用Domain.GetCurrentDomain()功能

+1

我使用本地用戶登錄時發生錯誤,使用域用戶登錄時發生錯誤... – vIceBerg 2008-09-26 18:36:29

+0

沒有活動目錄的NT4域如何? – VVS 2008-10-01 16:40:15

1

我發現一些作品:

使用System.Net.NetworkInformation;

IPGlobalProperties.GetIPGlobalProperties()。DomainName;

適用於本地用戶和域用戶。

相關問題