2012-05-14 9 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]); 
        } 
       } 
      } 
     } 
関連する問題