我是靠谱客的博主 友好小丸子,最近开发中收集的这篇文章主要介绍C# System.DirectoryServices.DirectoryEntry 域用户验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天开发一个web site 想直接调用域用户的密码来验证登陆 

C#开发,直接引用System.DirectoryServices.DirectoryEntry。

            //获取所有域用户
            var domain = new System.DirectoryServices.DirectoryEntry("LDAP://domain");
            //var searcher = new System.DirectoryServices.DirectorySearcher(domain);
            //searcher.Filter = string.Format("(&(sAMAccountName={0})(name={1}))", "loginName*", "yang*");
            var result = searcher.FindAll();
            //SearchResultCollection result =searcher.FindAll() ;
            //foreach (SearchResult item in result)
            //{
            //    DirectoryEntry user = (DirectoryEntry)item.GetDirectoryEntry();
            //    Console.WriteLine(user.Properties["name"].Value.ToString() + "  " + user.Properties["sAMAccountName"].Value.ToString());

            //}

上面这段使用FindAll 函数,直接获取满足条件的所有用户,然后循环显示所有用户信息。


            var searcher = new System.DirectoryServices.DirectorySearcher(domain);
            searcher.Filter = string.Format("(&(sAMAccountName={0})(name={1}))", "loginName*", "yang*");
            var result = searcher.FindOne();
            DirectoryEntry user = result.GetDirectoryEntry();  
            Console.WriteLine(user.Properties["name"].Value.ToString() + "  " + user.Properties["sAMAccountName"].Value.ToString());
            foreach (PropertyValueCollection item in user.Properties)
            {
                Console.WriteLine(item.PropertyName + ":" + item.Value.ToString());
            }
            user.InvokeSet("SetPassword", "password");

            user.CommitChanges();

上面这段用FindOne只查询一个用户,并尝试使用 user.InvokeSet("SetPassword", "password");来修改域用户密码未成功 。

  string _Path = "WinNT://" + Environment.MachineName;
  DirectoryEntry machine = new DirectoryEntry(_Path);
  //获得计算机实例
  DirectoryEntry user = machine.Children.Find(userName, "User");
  //找得用户
  if (user != null)
  {
    user.Invoke("SetPassword", password); //用户密码
    user.CommitChanges();

  }

使用 WinNT:可以直接查询本地用户,并使用user.Invoke("SetPassword", password); 来重置本地帐号的密码。

object ret = user.Invoke("ChangePassword", password);可以修改账号的密码。

最后

以上就是友好小丸子为你收集整理的C# System.DirectoryServices.DirectoryEntry 域用户验证的全部内容,希望文章能够帮你解决C# System.DirectoryServices.DirectoryEntry 域用户验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部