2008-11-27 41 views
8

Có thể ai đó giúp tôi lấy tất cả các tên miền trong Active Directory. Tôi đã thử nhiều lần, nhưng tất cả các chương trình đều chỉ liệt kê tên miền đang hoạt động hiện tại.Cách lấy danh sách tất cả các tên miền trong Active Directory bằng C#

Tôi làm cách nào để thực hiện việc này?

+0

tôi đánh dấu liên kết này ngày khác. Nó cung cấp một cách tiếp cận để làm điều này bằng cách sử dụng các truy vấn LDAP. Nên thích ứng với ADSI. http://itchanged.com/FindingAllDomainsInAnActiveDirectoryForest.html –

Trả lời

1

Sử dụng DirectorySearcher bạn có thể kết nối và đọc cấu trúc của một Active Directory, bao gồm cấu trúc (đơn vị tổ chức, nhóm, người dùng, máy tính, bộ điều khiển miền). Để kết nối với một miền khác, bạn sẽ cần thông tin đăng nhập của miền khác đó. Chúng tôi gặp sự cố khi kết nối với miền khác từ máy thuộc miền khác với tên miền đích. Tôi cũng tò mò nếu điều đó thậm chí có thể.

9
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password")); 

Forest forest = domain.Forest; 

DomainCollection domains = forest.Domains; 

Ở trên sử dụng không gian tên System.DirectoryServices.ActiveDirectory. Nó sẽ cung cấp cho bạn một bộ sưu tập tên miền có chứa tất cả các tên miền trong cùng một khu rừng với tên miền của bạn.

4

Tôi đã gặp một số vấn đề khi mã của LeeMobile hoạt động trong trường hợp của tôi, đó là cố gắng tìm ngữ cảnh miền hiện tại của ứng dụng trong khi chạy forest.Domains. Tôi đã có thể vượt qua nó bằng cách làm một cái gì đó như thế này.

Forest forest = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, "yourForestDomain", "username", "password")); 
DomainCollection domains = forest.Domains; 
0

Bạn cũng có thể sử dụng System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest(). Domains

var domains = Forest.GetCurrentForest().Domains.Cast<Domain>(); 
foreach (var domain in domains) 
{ 
    Console.WriteLine(domain.Name); 
} 
Các vấn đề liên quan