Fungsi NetUserModalsGet (lmaccess.h)
Fungsi NetUserModalsGet mengambil informasi global untuk semua pengguna dan grup global dalam database keamanan, yang merupakan database manajer akun keamanan (SAM) atau, dalam kasus pengontrol domain, Direktori Aktif.
Sintaks
NET_API_STATUS NET_API_FUNCTION NetUserModalsGet(
[in, optional] LPCWSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Parameter
[in, optional] 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. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
[in] level
Tingkat informasi data yang diminta. Parameter ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Mengembalikan parameter kata sandi global. Parameter bufptr menunjuk ke struktur USER_MODALS_INFO_0 . |
|
Mengembalikan informasi server masuk dan pengontrol domain. Parameter bufptr menunjuk ke struktur USER_MODALS_INFO_1 . |
|
Mengembalikan nama domain dan pengidentifikasi. Parameter bufptr menunjuk ke struktur USER_MODALS_INFO_2 . Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. |
|
Mengembalikan informasi penguncian. Parameter bufptr menunjuk ke struktur USER_MODALS_INFO_3 . |
Log masuk sesi null dapat memanggil NetUserModalsGet secara anonim pada tingkat informasi 0 dan 3.
[out] bufptr
Penunjuk ke buffer yang menerima data. Format data ini tergantung pada nilai parameter tingkat .
Buffer untuk data ini dialokasikan oleh sistem dan aplikasi harus memanggil fungsi NetApiBufferFree untuk membebaskan memori yang dialokasikan ketika data yang dikembalikan tidak lagi diperlukan. Untuk informasi selengkapnya, lihat Buffer Fungsi Manajemen Jaringan dan Panjang Buffer Fungsi Manajemen Jaringan.
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. |
|
Jalur jaringan tidak ditemukan. Kesalahan ini dikembalikan jika parameter nama server tidak dapat ditemukan. |
|
Tingkat panggilan sistem tidak benar. Kesalahan ini dikembalikan jika parameter tingkat bukan salah satu nilai yang didukung. |
|
Nama file, nama direktori, atau sintaks label volume salah. Kesalahan ini dikembalikan jika sintaks parameter nama server salah. |
|
Nama akun target salah. Kesalahan ini dikembalikan untuk kegagalan masuk ke parameter nama server jarak jauh yang berjalan di Windows Vista. |
|
Nama komputer tidak valid. |
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 modal pengguna manajemen jaringan. Untuk informasi selengkapnya, lihat IADsDomain.
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 mengizinkan semua pengguna terautentikasi dan anggota grup "Akses pra-Windows 2000 kompatibel" untuk melihat informasi. Jika Anda memanggil fungsi ini di server anggota atau stasiun kerja, semua pengguna yang diautentikasi dapat melihat informasi. Untuk informasi tentang akses anonim dan membatasi akses anonim pada platform ini, lihat Persyaratan Keamanan untuk Fungsi Manajemen Jaringan. Untuk informasi selengkapnya tentang ACL, ACE, dan token akses, lihat Model Access Control.
Pendeskripsi keamanan objek Domain digunakan untuk melakukan pemeriksaan akses untuk fungsi ini.
Untuk mengambil pengidentifikasi keamanan (SID) domain tempat komputer berada, panggil fungsi NetUserModalsGet yang menentukan struktur USER_MODALS_INFO_2 dan NULL dalam parameter nama server . Jika komputer bukan anggota domain, fungsi mengembalikan penunjuk NULL .
Contoh
Sampel kode berikut menunjukkan cara mengambil informasi global untuk semua pengguna dan grup global dengan panggilan ke fungsi NetUserModalsGet . Sampel memanggil NetUserModalsGet, menentukan informasi tingkat 0 (USER_MODALS_INFO_0). Jika panggilan berhasil, sampel mencetak informasi kata sandi global. Terakhir, sampel kode membebaskan memori yang dialokasikan untuk buffer informasi.
#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 = 0;
USER_MODALS_INFO_0 *pBuf = NULL;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = (LPTSTR) argv[1];
//
// Call the NetUserModalsGet function; specify level 0.
//
nStatus = NetUserModalsGet((LPCWSTR) pszServerName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call succeeds, print the global information.
//
if (nStatus == NERR_Success)
{
if (pBuf != NULL)
{
printf("\tMinimum password length: %d\n", pBuf->usrmod0_min_passwd_len);
printf("\tMaximum password age (d): %d\n", pBuf->usrmod0_max_passwd_age/86400);
printf("\tMinimum password age (d): %d\n", pBuf->usrmod0_min_passwd_age/86400);
printf("\tForced log off time (s): %d\n", pBuf->usrmod0_force_logoff);
printf("\tPassword history length: %d\n", pBuf->usrmod0_password_hist_len);
}
}
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
//
// Free the allocated memory.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
Persyaratan
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 |