Nếu bạn đang sử dụng .NET 3.5 hoặc mới hơn, bạn có thể sử dụng một PrincipalSearcher
và một "truy vấn theo ví dụ" chủ yếu để làm tìm kiếm của bạn:
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// define a "query-by-example" principal - here, we search for a UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.SamAccountName = "Esteban*";
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
}
Nếu bạn thiên đường đã hoàn toàn đọc bài viết Managing Directory Security Principals in the .NET Framework 3.5 của MSDN cho thấy cách sử dụng tốt nhất các tính năng mới trong System.DirectoryServices.AccountManagement
. Hoặc xem không gian tên MSDN documentation on the System.DirectoryServices.AccountManagement.
Tất nhiên, tùy thuộc vào nhu cầu của bạn, bạn có thể muốn xác định các tài sản khác trên rằng "truy vấn theo ví dụ" người dùng chính bạn tạo ra:
DisplayName
(thường: Tên đầu tiên + không gian + tên cuối cùng)
SAM Account Name
-/AD tên tài khoản Windows
User Principal Name
- "[email protected]" tên phong cách của bạn
bạn có thể SPE quy định bất kỳ thuộc tính nào trên số UserPrincipal
và sử dụng các thuộc tính đó làm "truy vấn theo ví dụ" cho PrincipalSearcher
của bạn.
Nguồn
2012-03-09 13:54:26
Tôi chỉ duy trì một số mã hiện có, vì vậy tôi không muốn làm hỏng rất nhiều với mã bạn gửi cho tôi, tuy nhiên với điều này tôi cho rằng tôi có thể đặt * ở đầu và cuối và nó cũng hoạt động. –
như thế này: sAMAccountName = * "+ sAMAccountName +" *) –
@EstebanV .: [theo điều này] (http://technet.microsoft.com/en-us/library/ee198823.aspx) có vẻ như nó sẽ hoạt động , Vâng. –