Bagikan melalui


Mengubah Elemen Informasi Pengguna

Fungsi manajemen jaringan menyediakan berbagai tingkat informasi untuk membantu mengubah informasi pengguna. Beberapa tingkat memerlukan hak istimewa administratif agar berhasil dijalankan. Untuk informasi selengkapnya tentang fungsi panggilan yang memerlukan hak istimewa administrator, lihat Menjalankan dengan Hak Istimewa.

Kode sampel dalam topik ini menunjukkan cara mengubah beberapa elemen informasi pengguna dengan memanggil fungsi NetUserSetInfo . Kode ini menggunakan berbagai struktur informasi manajemen jaringan.

Saat mengubah informasi pengguna, yang terbaik adalah menggunakan tingkat spesifik untuk informasi tersebut. Ini mencegah pengaturan ulang informasi yang tidak disengaja saat menggunakan nilai tingkat yang lebih rendah.

Mengatur beberapa tingkat yang lebih umum digunakan diilustrasikan dalam sampel kode berikut:

Semua fragmen kode mengasumsikan bahwa pengguna telah menentukan direktif kompilasi UNICODE dan menyertakan file header SDK yang sesuai, sebagai berikut:

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

Mengatur Kata Sandi Pengguna, Tingkat 1003

Fragmen kode berikut menggambarkan cara mengatur kata sandi pengguna ke nilai yang diketahui dengan panggilan ke fungsi NetUserSetInfo . Topik USER_INFO_1003 berisi informasi tambahan.

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

Mengatur Hak Istimewa Pengguna, Tingkat 1005

Fragmen kode berikut menggambarkan cara menentukan tingkat hak istimewa yang ditetapkan untuk pengguna dengan panggilan ke fungsi NetUserSetInfo . Topik USER_INFO_1005 berisi informasi tambahan. Untuk informasi selengkapnya tentang hak istimewa akun, lihat Hak Istimewa dan Konstanta Otorisasi.

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

Mengatur Direktori Beranda Pengguna, Tingkat 1006

Fragmen kode berikut menggambarkan cara menentukan jalur direktori beranda pengguna dengan panggilan ke fungsi NetUserSetInfo . Direktori dapat berupa jalur yang dikodekan secara permanen atau jalur Unicode yang valid. Topik USER_INFO_1006 berisi informasi tambahan.

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

Mengatur Bidang Komentar Pengguna, Tingkat 1007

Fragmen kode berikut menggambarkan cara mengaitkan komentar dengan pengguna dengan memanggil fungsi NetUserSetInfo . Topik USER_INFO_1007 berisi informasi tambahan.

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

Mengatur Bendera Pengguna, Tingkat 1008

Fragmen kode berikut menggambarkan cara mengatur bendera pengguna dengan panggilan ke fungsi NetUserSetInfo . Topik USER_INFO_1008 berisi daftar nilai yang valid untuk bendera dan deskripsi setiap bendera.

Perhatikan bahwa bendera UF_SCRIPT harus diatur untuk jaringan Windows NT, Windows 2000, Windows XP, dan LAN Manager. Mencoba mengatur bendera lain tanpa mengatur UF_SCRIPT pada jaringan ini akan menyebabkan fungsi NetUserSetInfo gagal.

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

Mengatur Jalur Skrip Pengguna, Tingkat 1009

Fragmen kode berikut menggambarkan cara mengatur jalur untuk file skrip masuk pengguna tertentu dengan panggilan ke fungsi NetUserSetInfo . File skrip dapat berupa . File CMD, file .EXE, atau file .BAT. String juga bisa null. Topik USER_INFO_1009 berisi informasi tambahan.

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

Mengatur Bendera Otoritas Pengguna, Tingkat 1010

Fragmen kode berikut menggambarkan cara mengatur bendera hak istimewa operator untuk pengguna dengan panggilan ke fungsi NetUserSetInfo . Topik USER_INFO_1010 berisi daftar nilai yang valid untuk bendera dan deskripsi setiap bendera.

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

Mengatur nama lengkap pengguna, tingkat 1011

Fragmen kode berikut menggambarkan cara mengatur nama lengkap pengguna dengan panggilan ke fungsi NetUserSetInfo . Topik USER_INFO_1011 berisi informasi tambahan.

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