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
0
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.
1
Menentukan informasi terperinci tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1 .
2
Menentukan informasi tingkat satu dan atribut tambahan tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_2 .
3
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.
4
Menentukan informasi tingkat dua dan atribut tambahan tentang akun pengguna. Tingkat ini hanya valid pada server. Parameter buf menunjuk ke struktur USER_INFO_4 .
21
Menentukan LAN Manager terenkripsi satu arah 2. kata sandi yang kompatibel dengan x. Parameter buf menunjuk ke struktur USER_INFO_21 .
22
Menentukan informasi terperinci tentang akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_22 .
1003
Menentukan kata sandi pengguna. Parameter buf menunjuk ke struktur USER_INFO_1003 .
1005
Menentukan tingkat hak istimewa pengguna. Parameter buf menunjuk ke struktur USER_INFO_1005 .
1006
Menentukan jalur direktori beranda untuk pengguna. Parameter buf menunjuk ke struktur USER_INFO_1006 .
1007
Menentukan komentar untuk dikaitkan dengan akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1007 .
1008
Menentukan atribut akun pengguna. Parameter buf menunjuk ke struktur USER_INFO_1008 .
1009
Menentukan jalur untuk file skrip masuk pengguna. Parameter buf menunjuk ke struktur USER_INFO_1009 .
1010
Menentukan hak istimewa operator pengguna. Parameter buf menunjuk ke struktur USER_INFO_1010 .
1011
Menentukan nama lengkap pengguna. Parameter buf menunjuk ke struktur USER_INFO_1011 .
1012
Menentukan komentar untuk dikaitkan dengan pengguna. Parameter buf menunjuk ke struktur USER_INFO_1012 .
1014
Menentukan nama stasiun kerja tempat pengguna dapat masuk. Parameter buf menunjuk ke struktur USER_INFO_1014 .
1017
Menentukan kapan akun pengguna kedaluwarsa. Parameter buf menunjuk ke struktur USER_INFO_1017 .
1020
Menentukan waktu saat pengguna dapat masuk. Parameter buf menunjuk ke struktur USER_INFO_1020 .
1024
Menentukan kode negara/wilayah pengguna. Parameter buf menunjuk ke struktur USER_INFO_1024 .
1051
Menentukan pengidentifikasi relatif grup global yang mewakili pengguna terdaftar. Parameter buf menunjuk ke struktur USER_INFO_1051 .
1052
Menentukan jalur ke profil pengguna jaringan. Parameter buf menunjuk ke struktur USER_INFO_1052 .
1053
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
ERROR_ACCESS_DENIED
Pengguna tidak memiliki akses ke informasi yang diminta.
ERROR_INVALID_PARAMETER
Salah satu parameter fungsi tidak valid. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
NERR_InvalidComputer
Nama komputer tidak valid.
NERR_NotPrimary
Operasi hanya diperbolehkan pada pengendali domain utama domain.
NERR_SpeGroupOp
Operasi ini tidak diizinkan pada grup khusus tertentu, yaitu grup pengguna, grup admin, grup lokal, atau grup tamu.
NERR_LastAdmin
Operasi tidak diizinkan pada akun administratif terakhir.
NERR_BadPassword
Nama berbagi atau kata sandi tidak valid.
NERR_PasswordTooShort
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.)
NERR_UserNotFound
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

Lihat juga

NetUserGetInfo

Fungsi Manajemen Jaringan

Gambaran Umum Manajemen Jaringan

USER_INFO_0

USER_INFO_1

USER_INFO_1003

USER_INFO_1005

USER_INFO_1006

USER_INFO_1007

USER_INFO_1008

USER_INFO_1009

USER_INFO_1010

USER_INFO_1011

USER_INFO_1012

USER_INFO_1013

USER_INFO_1014

USER_INFO_1017

USER_INFO_1020

USER_INFO_1024

USER_INFO_1051

USER_INFO_1052

USER_INFO_1053

USER_INFO_2

USER_INFO_21

USER_INFO_22

USER_INFO_4

Fungsi Pengguna