NetUserAdd参数转换问题!

   昨天使用到API函数NetUserAdd,  虽然注意到它涉及的结构USER_INFO_1的成员有LPWSTR(WCHAR *、wchar_t *),但是尝试了多种方法后仍然不能成功的添加用户,肯定是参数类型的问题。只恨自己平时忽视了这些字符编码规则的问题。问题解决后,总结了一下解决经验和方法。

1。要将USER_INFO_1的成员填充完整。示例如下,具体参数参考MSDN。

 uiAdd.usri1_name = name;
 uiAdd.usri1_password = L"123";
 uiAdd.usri1_priv = USER_PRIV_USER;
 uiAdd.usri1_comment = NULL;
 uiAdd.usri1_flags = UF_SCRIPT;
 uiAdd.usri1_home_dir = NULL;
 //uiAdd.usri1_password_age = NULL;   //NetUserAdd忽略USER_INFO_1的usri1_password_age成员
 uiAdd.usri1_script_path = NULL;
 retStatus = NetUserAdd(NULL,dwLevel,(LPBYTE)&uiAdd,NULL);

 2。参数传递的时候要注意类型的转换。这里主要涉及的是char * 和LPWSTR(即WCHAR或wchar_t)的转换。

void do_NetUserAdd(const char * UserName)
{
 USER_INFO_1 uiAdd;
 wchar_t * name= new wchar_t[strlen(UserName)+1];
 mbstowcs(name,UserName,strlen(UserName));
 
 uiAdd.usri1_name = name;
 ...... //一下内容参考1
 }

void main()
{
 do_NetUserAdd("TestUser");
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值