2012-07-02 75 views
1

假設您的組織中有一個包含兩個域的森林。就我而言,每個域都在服務器中定義,所以我有兩個域控制器。如何枚舉多域環境中的用戶組

DOMAIN1 
    group1 
    user1 
DOMAIN2 
    group2 
    user2 

group1 members: user1, user2 
group2 members: user1, user2 

有沒有辦法列出組認爲USER1屬於,從一臺機器是在域DOMAIN2?使用C#或WinAPI對我來說是有效的。


編輯:的WinAPI的功能NetUserGetGroups不爲我工作,因爲當它執行加載user1的組中屬於域DOMAIN2機器不工作。

我需要類似LookupAccountName的東西,是能夠解決跨域:

如果名稱不能在本地系統上得到解決,此功能將 嘗試使用受信任的域控制器來解析名稱當地的 系統。

+0

NetUserGetGroups應該可以工作,您只需要爲DOMAIN1指定一個域控制器作爲目標計算機。您可以使用NetGetDCName來查找合適的DC。否則,您可能需要顯式查詢Active Directory。有關某些選項,請參閱http://msdn.microsoft.com/en-us/library/windows/desktop/ee663271%28v=vs.85%29.aspx。就我個人而言,我已經使用LDAP API來完成這類工作,不過僅在單一域環境中。 –

回答

0

如果您使用的是.NET 4.0,System.DirectoryServices.AccountManagement命名空間可以提供幫助。 使用PrincipalContext創建與域的連接,請用戶使用UserPrincipal並調用方法GetGroups。我相信你可以爲所有必需的域名做到這一點,只要你有適當的權限。此代碼項目article顯示了一些示例。