共用方式為


變更使用者資訊的專案

網路管理功能提供各種不同的資訊層級,以協助變更使用者資訊。 某些層級需要系統管理許可權才能順利執行。 如需呼叫需要系統管理員許可權之函式的詳細資訊,請參閱 以特殊許可權執行

本主題中的範例程式碼示範如何藉由呼叫 NetUserSetInfo 函式來變更數個使用者資訊元素。 程式碼會使用各種網路管理資訊結構。

變更使用者資訊時,最好使用該資訊的特定層級。 這可防止在使用較低層級值時意外重設不相關的資訊。

下列程式碼範例說明設定一些較常用層級:

所有程式碼片段都假設使用者已定義 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主題包含其他資訊。 如需帳戶許可權的詳細資訊,請參閱 許可權授權常數

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);