【发布时间】:2012-10-15 05:32:37
【问题描述】:
我正在尝试使用 ldap_modify 函数修改 AD 属性值...
代码如下...
LDAPMod *list_of_attrs[1]={0};
char *Password[] = {"Password2"};
LDAPMessage *result=NULL;
int msgid;
int rc=0;
LDAPMod attribute2;
attribute2.mod_type = (PCHAR)"Password number";
attribute2.mod_op = LDAP_MOD_REPLACE;
attribute2.mod_vals.modv_strvals=Password;
list_of_attrs[0] = &attribute2;
wchar_t dnName[100]={0};
char *dn = "CN=test,CN=Users,DC=raja,DC=com";
mbstowcs(dnName,dn, 100);
PWCHAR dnNameval = (PWCHAR)malloc(sizeof(PWCHAR) * 20);
wcscpy(dnNameval,dnName);
msgid=ldap_modify(pLdapConnection,(const PCHAR)dnNameval, list_of_attrs);
但是,当谈到最后一行时(msgid)发生访问冲突异常..
*AD2.exe 中 0x76f693ac 处的未处理异常:0xC0000005:访问冲突读取位置 0xcccccccc。*
请帮我解决这个问题... 提前致谢。
【问题讨论】:
-
将宽字符串转换为窄字符串是个坏主意。
-
很可能是演员:
(const PCHAR)dnNameval. -
我不擅长有问题的LDAP函数,但除了混合使用或
char和wchar_t之外,函数如何知道数组list_of_attrs和Password的长度是? -
现在我唯一的问题是 list_of_attrs attribute2.mod_type = (PCHAR)"Password number";属性 2.mod_op = LDAP_MOD_REPLACE; attribute2.mod_vals.modv_strvals=密码; list_of_attrs[0] = &attribute2;我怎么能将值传递给这个参数......主要是attribute2.mod_vals......