打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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);可以修改账号的密码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Active Directory编程
AD相关信息
C# 域用户操作(转) - WEBBER - 博客园
ASP.NET对IIS中的虚拟目录进行操作
C#:在IIS中创建一个WEB站点
powershell更改用户信息
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服