USER_INFO構造体でfull_nameを指定しているのもかかわらず
名前とフルネームが一緒になってしまします
USER_INFO_4 userInfo;
userInfo.usri4_name = szUserName;
userInfo.usri4_password = szPassWrod;
userInfo.usri4_priv = dwPrivilege;
userInfo.usri4_home_dir = NULL;
userInfo.usri4_comment = szComment;
userInfo.usri4_flags = UF_SCRIPT | UF_DONT_EXPIRE_PASSWD |
UF_PASSWD_CANT_CHANGE;
userInfo.usri4_script_path = NULL;
userInfo.usri4_full_name = szFullName;
if (NetUserAdd(NULL, 1, (LPBYTE)&userInfo, &dwError) != NERR_Success) {
MessageBox(NULL, TEXT(ユーザーの作成に失敗しました。), NULL, MB_ICONWARNING);
return 0;
}
作成されたユーザのフルネームはszUserNameになります
どうかよろしくおねがいします
おひさしぶりです。
上記の問題、未だ解決できません。
どなたかご教授お願いします。
※Unicodeでしか試していません
※というかUnicode以外で動くんでしょうか これ
NetUserAddするときにlevelに1を指定しているので
この時にセットされるのはUSER_INFO_1構造体にある物のみです
故に
userInfo.usri4_full_name = szFullName;
などとしても意味が無いという事のようです
さらっと試した限りではlevelに2や3では出来なかったので
NetUserAdd一発で指定する方法はちょっとわかりませんが、
http://msdn.microsoft.com/ja-jp/library/cc447007.aspx
によるとlevel1で実行した場合はfull_nameにnameを割り当てると書いてあるので
説明の通りNetUserSetInfoを呼び出す事でフルネームを変更することにします
http://msdn.microsoft.com/ja-jp/library/cc447056.aspx
によるとlevel 1011がユーザーのフルネームを指定するとあるので、
使う構造体はUSER_INFO_1011になります
という事で、NetUserAddした後に
USER_INFO_1011 ui1011;
ui1011.usri1011_full_name = _T(テスト);
NetUserSetInfo(NULL, _T(test), 1011, (LPBYTE)&ui1011, &dwError);
とすればフルネームを変更する事が出来ました
USER_INFO_2を使い、
levelに2を指定してNetUserAddしてみたところ一発でフルネームが指定できました
MSDN斜め読みしすぎ>わたし
> MSDN斜め読みしすぎ>わたし
日本語版MSDNが酷すぎなせいという気がする。
> http://msdn.microsoft.com/ja-jp/library/cc447007.aspx
英語版MSDNの何年前時点の訳なの…コレ
http://msdn.microsoft.com/en-us/library/aa370649.aspx
tarouさん検証ありがとうございます
非常に助かりました。
自分ももう少しMSDNを調べる必要がありました。。。
とにもかくにもありがとうございます。
入れ忘れ