Fungsi NetUserSetInfo (lmaccess.h)
Fungsi NetUserSetInfo mengatur parameter akun pengguna.
Sintaks
NET_API_STATUS NET_API_FUNCTION NetUserSetInfo(
[in] LPCWSTR servername,
[in] LPCWSTR username,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
Parameter
[in] servername
Penunjuk ke string konstanta yang menentukan nama DNS atau NetBIOS dari server jarak jauh tempat fungsi dijalankan. Jika parameter ini NULL, komputer lokal akan digunakan.
[in] username
Penunjuk ke string konstanta yang menentukan nama akun pengguna untuk mengatur informasi. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
[in] level
Tingkat informasi data. Parameter ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Menentukan nama akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_0 . Gunakan struktur ini untuk menentukan nama grup baru. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. |
|
Menentukan informasi terperinci tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1 . |
|
Menentukan informasi tingkat satu dan atribut tambahan tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_2 . |
|
Menentukan informasi tingkat dua dan atribut tambahan tentang akun pengguna. Tingkat ini hanya valid pada server. Parameter buf menunjuk ke struktur USER_INFO_3 . Perhatikan bahwa disarankan agar Anda menggunakan USER_INFO_4 sebagai gantinya. |
|
Menentukan informasi tingkat dua dan atribut tambahan tentang akun pengguna. Tingkat ini hanya valid pada server. Parameter buf menunjuk ke struktur USER_INFO_4 . |
|
Menentukan LAN Manager terenkripsi satu arah 2. kata sandi yang kompatibel dengan x. Parameter buf menunjuk ke struktur USER_INFO_21 . |
|
Menentukan informasi terperinci tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_22 . |
|
Menentukan kata sandi pengguna. Parameter buf menunjuk ke struktur USER_INFO_1003 . |
|
Menentukan tingkat hak istimewa pengguna. Parameter buf menunjuk ke struktur USER_INFO_1005 . |
|
Menentukan jalur direktori beranda untuk pengguna. Parameter buf menunjuk ke struktur USER_INFO_1006 . |
|
Menentukan komentar untuk dikaitkan dengan akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1007 . |
|
Menentukan atribut akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1008 . |
|
Menentukan jalur untuk file skrip masuk pengguna. Parameter buf menunjuk ke struktur USER_INFO_1009 . |
|
Menentukan hak istimewa operator pengguna. Parameter buf menunjuk ke struktur USER_INFO_1010 . |
|
Menentukan nama lengkap pengguna. Parameter buf menunjuk ke struktur USER_INFO_1011 . |
|
Menentukan komentar untuk dikaitkan dengan pengguna. Parameter buf menunjuk ke struktur USER_INFO_1012 . |
|
Menentukan nama stasiun kerja tempat pengguna dapat masuk. Parameter buf menunjuk ke struktur USER_INFO_1014 . |
|
Menentukan kapan akun pengguna kedaluwarsa. Parameter buf menunjuk ke struktur USER_INFO_1017 . |
|
Menentukan waktu saat pengguna dapat masuk. Parameter buf menunjuk ke struktur USER_INFO_1020 . |
|
Menentukan kode negara/wilayah pengguna. Parameter buf menunjuk ke struktur USER_INFO_1024 . |
|
Menentukan pengidentifikasi relatif grup global yang mewakili pengguna terdaftar. Parameter buf menunjuk ke struktur USER_INFO_1051 . |
|
Menentukan jalur ke profil pengguna jaringan. Parameter buf menunjuk ke struktur USER_INFO_1052 . |
|
Menentukan huruf kandar yang ditetapkan ke direktori asal pengguna. Parameter buf menunjuk ke struktur USER_INFO_1053 . |
[in] buf
Penunjuk ke buffer yang menentukan data. Format data ini tergantung pada nilai parameter tingkat . Untuk informasi selengkapnya, lihat Buffer Fungsi Manajemen Jaringan.
[out] parm_err
Penunjuk ke nilai yang menerima indeks anggota pertama struktur informasi pengguna yang menyebabkan ERROR_INVALID_PARAMETER. Jika parameter ini NULL, indeks tidak dikembalikan pada kesalahan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah NERR_Success.
Jika fungsi gagal, nilai yang dikembalikan dapat menjadi salah satu kode kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Pengguna tidak memiliki akses ke informasi yang diminta. |
|
Salah satu parameter fungsi tidak valid. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. |
|
Nama komputer tidak valid. |
|
Operasi hanya diperbolehkan pada pengendali domain utama domain. |
|
Operasi ini tidak diizinkan pada grup khusus tertentu, yaitu grup pengguna, grup admin, grup lokal, atau grup tamu. |
|
Operasi tidak diizinkan pada akun administratif terakhir. |
|
Nama berbagi atau kata sandi tidak valid. |
|
Kata sandi lebih pendek dari yang diperlukan. (Kata sandi juga bisa terlalu panjang, terlalu baru dalam riwayat perubahannya, tidak memiliki karakter unik yang cukup, atau tidak memenuhi persyaratan kebijakan kata sandi lain.) |
|
Nama pengguna tidak dapat ditemukan. |
Keterangan
Jika Anda memprogram Direktori Aktif, Anda mungkin dapat memanggil metode Antarmuka Layanan Direktori Aktif (ADSI) tertentu untuk mencapai fungsionalitas yang sama yang dapat Anda capai dengan memanggil fungsi pengguna manajemen jaringan. Untuk informasi selengkapnya, lihat IADsUser dan IADsComputer.
Jika Anda memanggil fungsi ini pada pengendali domain yang menjalankan Direktori Aktif, akses diizinkan atau ditolak berdasarkan daftar kontrol akses (ACL) untuk objek yang dapat diamankan. ACL default hanya mengizinkan Admin Domain dan Operator Akun untuk memanggil fungsi ini. Di server anggota atau stasiun kerja, hanya Administrator dan Pengguna Daya yang dapat memanggil fungsi ini. Untuk informasi selengkapnya, lihat Persyaratan Keamanan untuk Fungsi Manajemen Jaringan. Untuk informasi selengkapnya tentang ACL, ACL, dan token akses, lihat Model Access Control.
Pendeskripsi keamanan objek Pengguna digunakan untuk melakukan pemeriksaan akses untuk fungsi ini.
Hanya pengguna atau aplikasi yang memiliki hak istimewa administratif yang dapat memanggil fungsi NetUserSetInfo untuk mengubah kata sandi pengguna. Ketika administrator memanggil NetUserSetInfo, satu-satunya pembatasan yang diterapkan adalah bahwa panjang kata sandi baru harus konsisten dengan modal sistem. Pengguna atau aplikasi yang mengetahui kata sandi pengguna saat ini dapat memanggil fungsi NetUserChangePassword untuk mengubah kata sandi. Untuk informasi selengkapnya tentang fungsi panggilan yang memerlukan hak istimewa administrator, lihat Menjalankan dengan Hak Istimewa Khusus.
Anggota grup lokal Administrator dapat mengatur elemen akun pengguna yang dapat dimodifikasi. Semua pengguna dapat mengatur anggota usri2_country_code struktur USER_INFO_2 (dan anggota usri1024_country_code struktur USER_INFO_1024 ) untuk akun mereka sendiri.
Anggota grup lokal Operator Akun tidak dapat menetapkan detail untuk akun kelas Administrator, memberikan hak istimewa Administrator akun yang ada, atau mengubah hak istimewa operator dari akun apa pun. Jika Anda mencoba mengubah tingkat hak istimewa atau menonaktifkan akun terakhir dengan hak istimewa Administrator dalam database keamanan, (database manajer akun keamanan (SAM) atau, dalam kasus pengendali domain, Direktori Aktif), fungsi NetUserSetInfo gagal dan mengembalikan NERR_LastAdmin.
Untuk mengatur bendera kontrol akun pengguna berikut, hak istimewa dan hak akses kontrol berikut diperlukan.
Bendera kontrol akun | Hak istimewa atau hak yang diperlukan |
---|---|
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION | Hak istimewa SeEnableDelegationPrivilege, yang diberikan kepada Administrator secara default. |
UF_TRUSTED_FOR_DELEGATION | SeEnableDelegationPrivilege. |
UF_PASSWD_NOTREQD | Akses kontrol "Perbarui kata sandi tidak diperlukan" tepat di objek Domain, yang diberikan kepada pengguna yang diautentikasi secara default. |
UF_DONT_EXPIRE_PASSWD | Akses kontrol "Kata sandi tidak kedaluwarsa" tepat di objek Domain, yang diberikan kepada pengguna yang diautentikasi secara default. |
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED | Akses kontrol "Aktifkan kata sandi terenkripsi per pengguna" langsung di objek Domain, yang diberikan kepada pengguna yang diautentikasi secara default. |
UF_SERVER_TRUST_ACCOUNT | Akses kontrol "Tambahkan/hapus replika di domain" langsung di objek Domain, yang diberikan kepada Administrator secara default. |
Untuk daftar konstanta hak istimewa, lihat Konstanta Otorisasi.
Cara yang benar untuk menentukan nama baru untuk akun adalah dengan memanggil NetUserSetInfo dengan USER_INFO_0 dan menentukan nilai baru menggunakan anggota usri0_name . Jika Anda memanggil NetUserSetInfo dengan tingkat informasi lain dan menentukan nilai menggunakan anggota usriX_name , nilai akan diabaikan.
Perhatikan bahwa panggilan ke NetUserSetInfo hanya dapat mengubah direktori beranda untuk akun pengguna yang dibuat server jaringan.
Jika fungsi NetUserSetInfo mengembalikan ERROR_INVALID_PARAMETER, Anda dapat menggunakan parameter parm_err untuk menunjukkan anggota pertama struktur informasi pengguna yang tidak valid. (Struktur informasi pengguna dimulai dengan USER_INFO_ dan formatnya ditentukan oleh parameter tingkat .) Tabel berikut mencantumkan nilai yang bisa dikembalikan dalam parameter parm_err dan anggota struktur terkait yang bermasalah. (Awalan usri*_ menunjukkan bahwa anggota dapat dimulai dengan beberapa awalan, misalnya, usri10_ atau usri1003_.)
Nilai | Anggota |
---|---|
USER_NAME_PARMNUM | usri*_name |
USER_PASSWORD_PARMNUM | usri*_password |
USER_PASSWORD_AGE_PARMNUM | usri*_password_age |
USER_PRIV_PARMNUM | usri*_priv |
USER_HOME_DIR_PARMNUM | usri*_home_dir |
USER_COMMENT_PARMNUM | usri*_comment |
USER_FLAGS_PARMNUM | usri*_flags |
USER_SCRIPT_PATH_PARMNUM | usri*_script_path |
USER_AUTH_FLAGS_PARMNUM | usri*_auth_flags |
USER_FULL_NAME_PARMNUM | usri*_full_name |
USER_USR_COMMENT_PARMNUM | usri*_usr_comment |
USER_PARMS_PARMNUM | usri*_parms |
USER_WORKSTATIONS_PARMNUM | usri*_workstations |
USER_LAST_LOGON_PARMNUM | usri*_last_logon |
USER_LAST_LOGOFF_PARMNUM | usri*_last_logoff |
USER_ACCT_EXPIRES_PARMNUM | usri*_acct_expires |
USER_MAX_STORAGE_PARMNUM | usri*_max_storage |
USER_UNITS_PER_WEEK_PARMNUM | usri*_units_per_week |
USER_LOGON_HOURS_PARMNUM | usri*_logon_hours |
USER_PAD_PW_COUNT_PARMNUM | usri*_bad_pw_count |
USER_NUM_LOGONS_PARMNUM | usri*_num_logons |
USER_LOGON_SERVER_PARMNUM | usri*_logon_server |
USER_COUNTRY_CODE_PARMNUM | usri*_country_code |
USER_CODE_PAGE_PARMNUM | usri*_code_page |
USER_PRIMARY_GROUP_PARMNUM | usri*_primary_group_id |
USER_PROFILE_PARMNUM | usri*_profile |
USER_HOME_DIR_DRIVE_PARMNUM | usri*_home_dir_drive |
Nama akun pengguna dibatasi hingga 20 karakter dan nama grup dibatasi hingga 256 karakter. Selain itu, nama akun tidak dapat dihentikan oleh titik dan tidak dapat menyertakan koma atau salah satu karakter yang dapat dicetak berikut: ", /, , [, ], :, |, <, >, +, =, ;, ?, *. Nama juga tidak dapat menyertakan karakter dalam rentang 1-31, yang tidak dapat dicetak.
Fungsi NetUserSetInfo tidak mengontrol bagaimana parameter kata sandi diamankan saat dikirim melalui jaringan ke server jarak jauh untuk mengubah kata sandi pengguna. Enkripsi apa pun dari parameter ini ditangani oleh mekanisme Panggilan Prosedur Jarak Jauh (RPC) yang didukung oleh pengalih jaringan yang menyediakan transportasi jaringan. Enkripsi juga dikendalikan oleh mekanisme keamanan yang didukung oleh komputer lokal dan mekanisme keamanan yang didukung oleh server jaringan jarak jauh yang ditentukan dalam parameter nama server . Untuk detail selengkapnya tentang keamanan saat pengalihan jaringan Microsoft digunakan dan server jaringan jarak jauh menjalankan Microsoft Windows, lihat dokumentasi protokol untuk MS-RPCE dan MS-SAMR.
Contoh
Sampel kode berikut menunjukkan cara menonaktifkan akun pengguna dengan panggilan ke fungsi NetUserSetInfo . Sampel kode mengisi usri1008_flags anggota struktur USER_INFO_1008 , menentukan nilai UF_ACCOUNTDISABLE. Kemudian sampel memanggil NetUserSetInfo, menentukan tingkat informasi 0.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 1008;
USER_INFO_1008 ui;
NET_API_STATUS nStatus;
if (argc != 3)
{
fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
exit(1);
}
// Fill in the USER_INFO_1008 structure member.
// UF_SCRIPT: required.
//
ui.usri1008_flags = UF_SCRIPT | UF_ACCOUNTDISABLE;
//
// Call the NetUserSetInfo function
// to disable the account, specifying level 1008.
//
nStatus = NetUserSetInfo(argv[1],
argv[2],
dwLevel,
(LPBYTE)&ui,
NULL);
//
// Display the result of the call.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"User account %s has been disabled\n", argv[2]);
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | lmaccess.h (termasuk Lm.h) |
Pustaka | Netapi32.lib |
DLL | Netapi32.dll |