2012-10-06 64 views
0

我使用ldap_modify功能改变使用C++的属性值...如何使用C++在Active Directory的属性中设置值?

msgid=ldap_modify_ext_s(ld, dnNameval, ldapmod,NULL,NULL); 

的问题是在该函数的参数mod_val ...

LDAP *id; 
dnNameval ="distinguised name"; 

在ldapmod有三个值...

  1. mod_type =“要更改的属性”;
  2. mod_op = LDAP_MOD_REPLACE;
  3. ldapmod结构

的ldapmod结构是:

typedef struct ldapmod { 
     int mod_op; 
     char *mod_type; 
     union { 
     char **modv_strvals; 
     struct berval **modv_bvals; 
     } mod_vals; 
    #define mod_values  mod_vals.modv_strvals 
    #define mod_bvalues  mod_vals.modv_bvals 

} LDAPMod; 

我试图通过这样的值:

mod_vals=(PWCHAR*){"bala",Null}; 

这就造成了错误

error C2679: binary '=' : no operator found which takes a right-hand operand 
of type 'PWCHAR *' (or there is no acceptable conversion) 

我也试过这样:

mod_vals.modv_strvals=(PWCHAR*) Password1; 
mod_vals.modv_bvals=NULL; 

但当时阵中拥有一个空值...

谁能帮助我的工作如何通过该变量的值?我是否需要包含任何额外的头文件?我已经在使用winldap.h头文件。

在此先感谢。

回答

1

这是行不通的:

mod_vals = (PWCHAR*){"bala",Null}; 

您不能分配一个值,以联合的方式。您必须指定要写入的联合的哪些成员。另外,(PWCHAR *)是错误的类型;你不处理宽字符。即使你是,你也不能通过转换来转换一个字符串。

这也不行:

mod_vals.modv_strvals=(PWCHAR*) Password1; 
mod_vals.modv_bvals=NULL; 

modv_strvals成员是一个指针到指针,不只是一个指针,它没有任何意义写信给工会的两名成员;他们是相互排斥的。根据具体情况,您可以使用modv_strvalsmodv_bvals,两者都不会。

你可能想这样做:

mod_vals.modv_strvals = {"bala", Null}; 
相关问题