我正在使用Delphi 10.3和IPWorks LDAP组件,我可以修改其他属性而不会出现任何问题,例如unicodePwd,givenName和mail,但无法绑定ADS_UF_PASSWD_CANT_CHANGE的用户的userAccountControl属性,当然是在成功绑定为具有安全连接并提供正确DN的管理员,因为如果连接不安全,则无法修改密码:
const
ADS_UF_NORMAL_ACCOUNT = 512;
ADS_UF_DONT_EXPIRE_PASSWD = 65536;
ADS_UF_PASSWD_CANT_CHANGE = 64;
ADS_UF_LOCKOUT = 16;
ipaLDAP1.DN := searchResultDN;
ipaLDAP1.AttrCount := 1;
ipaLDAP1.AttrType[0] := 'userAccountControl';
ipaLDAP1.AttrValue[0] := IntToStr(ADS_UF_NORMAL_ACCOUNT + ADS_UF_DONT_EXPIRE_PASSWD + ADS_UF_LOCKOUT + ADS_UF_PASSWD_CANT_CHANGE);
ipaLDAP1.AttrModOp[0] := amoReplace;
ipaLDAP1.Modify();
很奇怪,我无法修改ADS_UF_PASSWD_CANT_CHANGE,当我检查用户时它对用户无效,该属性仍未选中,我不明白为什么。
[userAccountControl
是位掩码,因此您应该使用or
而不是+
。