2010-07-20 30 views
6

Tôi đang tạo và cập nhật Nhóm trong Active Directory bằng cách sử dụng lớp GroupPrincipal trong System.DirectoryServices.AccountManagement. Khi tạo và cập nhật, tôi cũng cần có thể đặt thuộc tính ManagedBy mà bạn có thể đặt trong tab Managed By trong thuộc tính nhóm trong bảng điều khiển quản lý quảng cáo.Làm cách nào để đặt thuộc tính ManagedBy trên GroupPrincipal

Có thể thực hiện theo chương trình không?

Trả lời

8

Bạn không thể làm điều này trực tiếp, không may - nhưng bạn có thể nhận được quyền truy cập vào các tiềm ẩn DirectoryEntry và làm điều đó có:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

UserPrincipal toBeModified = UserPrincipal.FindByIdentity("....."); 
UserPrincipal manager = UserPrincipal.FindByIdentity(ctx, "......"); 

DirectoryEntry de = toBeModified.GetUnderlyingObject() as DirectoryEntry; 

if (de != null) 
{ 
    de.Properties["managedBy"].Value = manager.DistinguishedName; 
    toBeModified.Save(); 
} 
+0

Không nên 'tobeModified' là loại' GroupPrincipal'? –

+1

@PBMe_HikeIt: không kể từ đó thuộc tính 'managedBy' không được" nổi lên "trong' GroupPrincipal', bạn cần phải "giảm một cấp" sang 'DirectoryEntry' và xử lý nó ở đó –

0

Hãy xem this page. Đây là một trong những hướng dẫn tốt nhất về AD trong C#.

Một số mã mà nên làm việc (chưa được kiểm tra):

string connectionPrefix = "LDAP://" + ouPath; 
    DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix); 
    DirectoryEntry newGroup = dirEntry.Children.Add 
     ("CN=" + groupName, "group"); 
    group.Properties["sAmAccountName"].Value = groupName; 
    newGroup.Properties["managedBy"].Value = managerDistinguishedName; 
    newGroup.CommitChanges(); 
    dirEntry.Close(); 
    newGroup.Close(); 
+0

Đó là không sử dụng không gian tên System.DirectoryServices.AccountManagement rằng OP yêu cầu ... –

+0

* http: //www.codeproject.com/KB/system/everythingInAD.aspx#13* không tìm thấy – Kiquenet

1

Bạn có thể mở rộng các lớp GroupPrincipal và cung cấp một tài sản ManagedBy sử dụng phương pháp ExtensionSet.

+0

Đây là cách tôi đang tấn công vấn đề ... mặc dù tôi đang gặp sự cố khi 'ExtensionSet' hoạt động đúng cách –

+0

[ Điều này] (https://www.codeproject.com/articles/118122/how-to-use-ad-attributes-not-represented-in-userpr) trên Code Project trông giống như một lời giải thích tuyệt vời về cách mở rộng GroupPrincipal lớp học sử dụng inhe ritance –

Các vấn đề liên quan