C# 如何获取Active Directory用户列表(仅显示在windows登录屏幕中的用户)

C# 如何获取Active Directory用户列表(仅显示在windows登录屏幕中的用户),c#,active-directory,wmi,wmi-query,windows-principal,C#,Active Directory,Wmi,Wmi Query,Windows Principal,如何获取Active Directory用户列表(仅显示在windows登录屏幕中的用户) 我尝试了许多使用Windows原则库和WMI Select命令的方法。我一直在找Administrator、Guest和其他一些VUSRNEIL-DELL。这三个用户帐户都不会出现在登录屏幕上。如何在这些用户类型之间解除友谊?检查当前登录用户的Win32\u LogonSession和Win32\u LoggedOnUser类(其中Win32\u LogonSession.LogonType='2'),然

如何获取Active Directory用户列表(仅显示在windows登录屏幕中的用户)


我尝试了许多使用Windows原则库和WMI Select命令的方法。我一直在找Administrator、Guest和其他一些VUSRNEIL-DELL。这三个用户帐户都不会出现在登录屏幕上。如何在这些用户类型之间解除友谊?

检查当前登录用户的Win32\u LogonSession和Win32\u LoggedOnUser类(其中Win32\u LogonSession.LogonType='2'),然后将其与Win32\u帐户关联起来

广告用户通常不会出现在登录屏幕上,是吗?本地用户可以。这将为您提供整个域的所有用户-即使只是列举这些用户可能需要相当长的时间…我不希望域上的用户。我只想让用户使用本地机器。在我的例子中,有2个用户(不在域中)在启动时出现在登录屏幕上。我只希望从我的方法返回这两个帐户(不包括管理员、来宾等)
//Add a reference on System.DirectoryServices.dll
    using System.DirectoryServices;    
    //Connect to your LDAP
    DirectoryEntry Ldap = new DirectoryEntry("LDAP://ADName", "Login", "Password");
    DirectorySearcher searcher = new DirectorySearcher(Ldap);
    //specify that you search user only by filtering AD objects
    searcher.Filter = "(objectClass=user)";
    //Loop on each users
     foreach( SearchResult result in searcher.FindAll() )
        {
           // On récupère l'entrée trouvée lors de la recherche
           DirectoryEntry DirEntry = result.GetDirectoryEntry();

           //On peut maintenant afficher les informations désirées
           Console.WriteLine("Login : " + DirEntry.Properties["SAMAccountName"].Value);
           Console.WriteLine("FirstName: " + DirEntry.Properties["sn"].Value);
           Console.WriteLine("LastName: " + DirEntry.Properties["givenName"].Value);
           Console.WriteLine("Email : " + DirEntry.Properties["mail"].Value);
           Console.WriteLine("Phone: " + DirEntry.Properties["TelephoneNumber"].Value);
           Console.WriteLine("Description : " + DirEntry.Properties["description"].Value);

           Console.WriteLine("-------------------");
        }