ユーザー情報の要素の変更
ネットワーク管理機能には、ユーザー情報の変更に役立つさまざまな情報レベルが用意されています。 一部のレベルでは、正常に実行するために管理特権が必要です。 管理者特権を必要とする関数の呼び出しの詳細については、「 特別な特権で実行する」を参照してください。
このトピックのサンプル コードでは、 NetUserSetInfo 関数を呼び出してユーザー情報のいくつかの要素を変更する方法を示します。 このコードでは、さまざまなネットワーク管理情報構造が使用されます。
ユーザー情報を変更する場合は、その情報の特定のレベルを使用することをお勧めします。 これにより、下位レベルの値を使用するときに、関連のない情報が誤ってリセットされるのを防ぐことができます。
一般的に使用されるレベルの一部を設定する方法を次のコード サンプルに示します。
- ユーザー パスワードの設定、レベル 1003
- ユーザー特権の設定、レベル 1005
- ユーザー ホーム ディレクトリの設定、レベル 1006
- ユーザー コメント フィールドの設定、レベル 1007
- ユーザー フラグの設定、レベル 1008
- ユーザー スクリプト パスの設定(レベル 1009)
- ユーザー権限フラグの設定、レベル 1010
- ユーザーのフル ネーム、レベル 1011 の設定
すべてのコード フラグメントは、ユーザーが UNICODE コンパイル ディレクティブを定義し、次のように適切な SDK ヘッダー ファイルを含んだと想定しています。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#define INCL_NET
#include <lm.h>
#include <stdio.h>
#pragma comment(lib, "netapi32.lib")
#define SERVER L"test_server_name"
#define USERNAME L"test_user_name"
DWORD netRet = 0;
ユーザー パスワードの設定、レベル 1003
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出して、ユーザーのパスワードを既知の値に設定する方法を示しています。 USER_INFO_1003トピックには追加情報が含まれています。
#define PASSWORD L"new_password"
USER_INFO_1003 usriSetPassword;
//
// Set the usri1003_password member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriSetPassword.usri1003_password = PASSWORD;
netRet = NetUserSetInfo( SERVER, USERNAME, 1003, (LPBYTE)&usriSetPassword, NULL );
if( netRet == NERR_Success )
printf("Success with level 1003!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1003\n", netRet);
ユーザー特権の設定、レベル 1005
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出して、ユーザーに割り当てられた特権のレベルを指定する方法を示しています。 USER_INFO_1005 トピックには追加情報が含まれています。 アカウント特権の詳細については、「 Privileges and Authorization Constants」を参照してください。
USER_INFO_1005 usriPriv;
//
// Set the usri1005_priv member to the appropriate value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriPriv.usri1005_priv = USER_PRIV_USER;
netRet = NetUserSetInfo( SERVER, USERNAME, 1005, (LPBYTE)&usriPriv, NULL );
if( netRet == NERR_Success )
printf("Success with level 1005!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1005\n", netRet);
ユーザー ホーム ディレクトリの設定、レベル 1006
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出してユーザーのホーム ディレクトリのパスを指定する方法を示しています。 ディレクトリには、ハードコーディングされたパスまたは有効な Unicode パスを指定できます。 USER_INFO_1006トピックには追加情報が含まれています。
#define HOMEDIR L"C:\\USER\USER_PATH"
USER_INFO_1006 usriHomeDir;
//
// Set the usri1006_home_dir member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriHomeDir.usri1006_home_dir = HOMEDIR;
netRet = NetUserSetInfo( SERVER, USERNAME, 1006, (LPBYTE)&usriHomeDir, NULL );
if( netRet == NERR_Success )
printf("Success with level 1006!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1006\n", netRet);
ユーザー コメント フィールドの設定、レベル 1007
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出してコメントをユーザーに関連付ける方法を示しています。 USER_INFO_1007 トピックには追加情報が含まれています。
#define COMMENT L"This is my Comment Text for the user"
USER_INFO_1007 usriComment;
//
// Set the usri1007_comment member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriComment.usri1007_comment = COMMENT;
netRet = NetUserSetInfo( SERVER, USERNAME, 1007, (LPBYTE)&usriComment, NULL );
if( netRet == NERR_Success )
printf("Success with level 1007!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1007\n", netRet);
ユーザー フラグの設定、レベル 1008
次のコード フラグメントは、 NetUserSetInfo 関数の呼び出しでユーザー フラグを設定する方法を示しています。 USER_INFO_1008 トピックには、フラグの有効な値の一覧と各フラグの説明が含まれています。
Windows NT、Windows 2000、Windows XP、LAN Manager ネットワークには、UF_SCRIPT フラグを設定する必要があります。 これらのネットワークでUF_SCRIPTを設定せずに他のフラグを設定しようとすると、 NetUserSetInfo 関数が失敗します。
#define USR_FLAGS UF_SCRIPT | UF_NORMAL_ACCOUNT
USER_INFO_1008 usriFlags;
//
// Set the usri1008_flags member to the appropriate constant value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriFlags.usri1008_flags = USR_FLAGS;
netRet = NetUserSetInfo( SERVER, USERNAME, 1008, (LPBYTE)&usriFlags, NULL );
if( netRet == NERR_Success )
printf("Success with level 1008!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1008\n", netRet);
ユーザー スクリプト パスの設定(レベル 1009)
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出して、特定のユーザーのログオン スクリプト ファイルのパスを設定する方法を示しています。 スクリプト ファイルには、 を指定できます。CMD ファイル、.EXE ファイル、または.BAT ファイル。 文字列は null にすることもできます。 USER_INFO_1009トピックには追加情報が含まれています。
#define SCRIPT_PATH L"C:\\BIN\\MYSCRIPT.BAT"
USER_INFO_1009 usriScrPath;
//
// Set the usri1009_script_path member to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriScrPath.usri1009_script_path = SCRIPT_PATH;
netRet = NetUserSetInfo( SERVER, USERNAME, 1009, (LPBYTE)&usriScrPath, NULL );
if( netRet == NERR_Success )
printf("Success with level 1009!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1009\n", netRet);
ユーザー権限フラグの設定、レベル 1010
次のコード フラグメントは、 NetUserSetInfo 関数を呼び出してユーザーのオペレーター特権フラグを設定する方法を示しています。 USER_INFO_1010 トピックには、フラグの有効な値の一覧と各フラグの説明が含まれています。
#define AUTHORITY_FLAGS AF_OP_ACCOUNTS
USER_INFO_1010 usriAuthFlags;
//
// Set the usri1010_auth_flags member to the appropriate constant value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriAuthFlags.usri1010_auth_flags = AUTHORITY_FLAGS;
netRet = NetUserSetInfo( SERVER, USERNAME, 1010, (LPBYTE)&usriAuthFlags, NULL);
if( netRet == NERR_Success )
printf("Success with level 1010!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1010\n", netRet);
ユーザーのフル ネーム、レベル 1011 の設定
次のコード フラグメントは、 NetUserSetInfo 関数の呼び出しでユーザーのフル ネームを設定する方法を示しています。 USER_INFO_1011 トピックには追加情報が含まれています。
#define USER_FULL_NAME L"Joe B. User"
USER_INFO_1011 usriFullName;
//
// Set the usri1011_full_name member to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriFullName.usri1011_full_name = USER_FULL_NAME;
netRet = NetUserSetInfo( SERVER, USERNAME, 1011, (LPBYTE)&usriFullName, NULL);
if( netRet == NERR_Success )
printf("Success with level 1011!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo\n", netRet);