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#
想对作者说点什么? 我来说一句

c#.net域用户验证代码

2010年05月05日 326KB 下载

Asp.Net(C#)AD域验证WebService

2013年04月26日 44KB 下载

c#AD域用户操作代码

2016年01月05日 566KB 下载

没有更多推荐了,返回首页

不良信息举报

C# System.DirectoryServices.DirectoryEntry 域用户验证

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭