日期:2015-03-14  浏览次数:3508 次

续上篇博文《LDAP(轻量目录访问协议)基于C#的System.DirectoryServices进行开发

 

通过上次的资料查阅已经开发出用域账号密码登陆网站的系统了

 

但是遗留一个问题:通过网站修改密码同步到域账户去

 

我用的IIS7,首先要给网站配置特定用户即管理员,赋予权限后才可以访问LDAP

 

 

看网上修改密码用的两种方法

 

1、  //取得DirectoryEntry传入用户名和密码 

     string  _path= "LDAP://domain";

      DirectorySearcher search = new DirectorySearcher(_path);

        filter = search.Filter;

      DirectoryEntry child = new DirectoryEntry(filter, EmailTextbox.Text.Trim(),

                        OldPasswordTextbox.Text.Trim());

                    child.Invoke("SetPassword", NewPasswordTextbox.Text.Trim());                  

                    child.CommitChanges();          

2、首先添加引用->COM引用/ Active DS Type Library    

    //也就是不用上面的Invoke,直接调用底层方法

    ActiveDs.IADsUser adsUser = (ActiveDs.IADsUser)child.NativeObject;

     adsUser.SetPassword(NewPasswordTextbox.Text.Trim());

      adsUser.AccountDisabled = false;

        child.CommitChanges();    

 

但这两种方法我都试了,就是出现“拒绝访问”的错误

 

于是在第一种方式的基础上,把标蓝的那句改成:

  child.Invoke("ChangePassword", OldPasswordTextbox.Text.Trim(), NewPasswordTextbox.Text.Trim());   

 

就可以修改成功了!