函数段如下
bool CNetLib::NetUserAddzp( const char* username, const char* password )
{
if( m_bWinNT )
{
USER_INFO_1 userinfo; userinfo.usri1_name=L"use";//(username );
userinfo.usri1_password = L"use";//( password );
userinfo.usri1_password_age = 0;
userinfo.usri1_priv=USER_PRIV_USER;
userinfo.usri1_home_dir=NULL;
userinfo.usri1_comment=NULL;
userinfo.usri1_flags=UF_SCRIPT| UF_DONT_EXPIRE_PASSWD | UF_PASSWD_CANT_CHANGE ;
userinfo.usri1_script_path=NULL; NET_API_STATUS nCallResult = m_pfNetUseAdd( NULL, 1, (LPBYTE)&userinfo, 0 );

delete [] userinfo.usri1_name;
delete [] userinfo.usri1_password;
delete [] userinfo.usri1_home_dir;
delete [] userinfo.usri1_comment;
delete [] userinfo.usri1_script_path; if( nCallResult == NERR_Success )
return true;
else
return false;
}
else
return false;
}
编译通过,但执行提示"0xcdcdcdcd"指令引用的"0xcdcdcd"内存,该内存不能为"read"
问题是出在哪,请指教
另userinfo.usri1_name=L"use";//(username );
userinfo.usri1_password = L"use";//( password );
如何转化const char *成LPWSTR

解决方案 »

  1.   

    delete [] userinfo.usri1_name;
    delete [] userinfo.usri1_password;
    出错!不能delete[]一个L或者_T的常字串
      

  2.   

    0xcdcdcdcd"指令引用的"0xcdcdcd"内存,该内存不能为"read"
    出错点是NET_API_STATUS nCallResult = m_pfNetUseAdd( NULL, 1, (LPBYTE)&userinfo, 0 );
      

  3.   

    不过确实不能delete一个常量字符串啊。我认为问题是m_pfNetUseAdd这个函数指针没有正确的得到。如何转化const char *成LPWSTR
    不能直接转化,要用MultiByteToWideChar,具体使用方法看MSDN的例子。
      

  4.   

    NET_API_STATUS (__stdcall *m_pfNetUseAdd) (LPWSTR UncServerName,DWORD Level,LPBYTE Buf,LPDWORD ParmError);
    我是这么定义的
      

  5.   


    现在运行通了,但是提示ERROR_INVALID_LEVEL