2012-05-14 47 views

回答

0

您可以使用類似以下內容:

List<string> LdapUsers = new List<string>(); 

if (String.IsNullOrWhiteSpace(domain)) 
{ 
    string username = WindowsIdentity.GetCurrent().Name; 
    domain = username.Substring(0, username.IndexOf("\\")); 
} 

PrincipalContext context; 
if (!String.IsNullOrWhiteSpace(user) && !String.IsNullOrWhiteSpace(password) && !String.IsNullOrWhiteSpace(domain)) 
    context = new PrincipalContext(ContextType.Domain, domain, user, password); 
if (!String.IsNullOrWhiteSpace(domain)) 
    context = new PrincipalContext(ContextType.Domain, domain); 
else 
    context = new PrincipalContext(ContextType.Domain); 
UserPrincipal userP = new UserPrincipal(context); 
userP.Enabled = true; 
PrincipalSearcher pS = new PrincipalSearcher(); 
pS.QueryFilter = userP; 

PrincipalSearchResult<Principal> result = pS.FindAll(); 
foreach (Principal p in result) 
    LdapUsers.Add(domain + "\\" + p.SamAccountName); 
1

你可以嘗試以下。

PrincipalContext ctx = new PrincipalContext(ContextType.Machine,Environment.MachineName); 
UserPrincipal user = new UserPrincipal(ctx); 
user.Name = "*"; 
PrincipalSearcher ps = new PrincipalSearcher(); 
ps.QueryFilter = user; 
PrincipalSearchResult<Principal> result = ps.FindAll(); 
foreach (Principal p in result) 
{ 
    using (UserPrincipal up = (UserPrincipal)p) 
    { 
     MessageBox.Show(up.Name); 
    } 
} 

或者這樣:

using System.Management; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      SelectQuery query = new SelectQuery("Win32_UserAccount"); 
      ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
      foreach (ManagementObject envVar in searcher.Get()) 
      { 
       Console.WriteLine("Username : {0}", envVar["Name"]); 
      } 

      Console.ReadLine(); 
     } 

How to list all Windows Users見。

+0

是否域或只針對本地用戶的第二個工作? – ChrFin

+0

專門針對正確使用本地用戶的用戶 –

0

另一種方式來搜索域用戶:

using System.DirectoryServices; 
using System.DirectoryServices.ActiveDirectory; 

     using (var domain = Domain.GetCurrentDomain()) 
     using (var directoryEntry = domain.GetDirectoryEntry()) 
     using (var directorySearcher = new DirectorySearcher(directoryEntry, "(&(objectCategory=person)(objectClass=user))")) 
     { 
      directorySearcher.PageSize = 1000; 

      using (var searchResults = directorySearcher.FindAll()) 
      { 
       foreach (SearchResult searchResult in searchResults) 
       { 
        using (var userEntry = searchResult.GetDirectoryEntry()) 
        { 
         Console.WriteLine(userEntry.Properties["cn"][0]); 
        } 
       } 
      } 
     } 
相關問題