USER_INFO構造体について

[戻る]
鴫ナ 2010/11/12(金) 11:16:54
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になります
どうかよろしくおねがいします

ーナ 2010/11/16(火) 14:30:11
おひさしぶりです。
上記の問題、未だ解決できません。

どなたかご教授お願いします。

tarou 2010/11/16(火) 16:14:58
※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);
とすればフルネームを変更する事が出来ました

tarou 2010/11/16(火) 17:27:54
USER_INFO_2を使い、
levelに2を指定してNetUserAddしてみたところ一発でフルネームが指定できました

MSDN斜め読みしすぎ>わたし

gak 2010/11/16(火) 17:56:59
> MSDN斜め読みしすぎ>わたし
日本語版MSDNが酷すぎなせいという気がする。

> http://msdn.microsoft.com/ja-jp/library/cc447007.aspx
英語版MSDNの何年前時点の訳なの…コレ
http://msdn.microsoft.com/en-us/library/aa370649.aspx

鴫ナ 2010/11/16(火) 21:43:55
tarouさん検証ありがとうございます
非常に助かりました。

自分ももう少しMSDNを調べる必要がありました。。。

とにもかくにもありがとうございます。

鴫ナ 2010/11/16(火) 21:44:18
[[解決]]
入れ忘れ

古いスレッドには追加発言できません。