사용자 정보의 요소 변경

네트워크 관리 기능은 사용자 정보를 변경하는 데 도움이 되는 다양한 정보 수준을 제공합니다. 일부 수준에서는 성공적으로 실행하려면 관리 권한이 필요합니다. 관리자 권한이 필요한 함수를 호출하는 방법에 대한 자세한 내용은 특수 권한으로 실행을 참조하세요.

이 항목의 샘플 코드는 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 함수를 호출하여 사용자의 홈 디렉터리의 경로를 지정하는 방법을 보여 줍니다. 디렉터리가 하드 코딩된 경로 또는 유효한 유니코드 경로일 수 있습니다. 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);