情况是这样的:打开一个WinForm的登陆窗口后,要用secur32.dll来判断输入的用户名是域中的用户,而且有继续操作的权限。
请问,怎样才能取得整个域的所有用户和他们各自的权限?

解决方案 »

  1.   

    http://www.pinvoke.net/default.aspx/secur32.LsaLogonUser
      

  2.   

    建议你阅读这个MSDN的文章: System.DirectoryServices命名空间
    用来方便地从托管代码中访问Active Directory域服务。
      

  3.   

    网上找了下,没经过测试
    System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://" + domainName);
                System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);
                mySearcher.Filter = ("(objectClass=user)"); //这儿很关键,user表示用户,group表示组
                richTextBox1.AppendText("Listing   of   users   in   the   Active   Directory");
                richTextBox1.AppendText("========================================");            foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
                {
                    try
                    {
                        System.DirectoryServices.DirectoryEntry de = resEnt.GetDirectoryEntry();
                        //用户名
                        richTextBox1.AppendText("Display   Name     :   " + de.Properties["DisplayName"].Value.ToString() + "\r\n");
                        //隶属于
                        richTextBox1.AppendText("memberof           :   " + de.Properties["memberof"].Value.ToString() + "\r\n");                    //其他信息
                        richTextBox1.AppendText("Email              :   " + de.Properties["Mail"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Title              :   " + de.Properties["Title"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("User   Name        :   " + de.Properties["sAMAccountName"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("First   Name       :   " + de.Properties["GivenName"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Last   Name        :   " + de.Properties["sn"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Initials           :   " + de.Properties["Initials"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Company            :   " + de.Properties["Company"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Department         :   " + de.Properties["Department"].Value.ToString() + "\r\n");
                        richTextBox1.AppendText("Telephone   No.    :   " + de.Properties["TelephoneNumber"].Value.ToString() + "\r\n");
                    }
                    catch
                    {
                    }
                    richTextBox1.AppendText("=========== End of user =============\r\n\r\n");
                }
                richTextBox1.AppendText("===========End of Listing =============\r\n\r\n\r\n");