2012-10-06 66 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}; 
相關問題