Fungsi ImpersonateLoggedOnUser (securitybaseapi.h)

Fungsi ImpersonateLoggedOnUser memungkinkan utas panggilan meniru konteks keamanan pengguna yang masuk. Pengguna diwakili oleh handel token.

Sintaks

BOOL ImpersonateLoggedOnUser(
  [in] HANDLE hToken
);

Parameter

[in] hToken

Handel ke token akses utama atau peniruan identitas yang mewakili pengguna yang masuk. Ini bisa menjadi handel token yang dikembalikan oleh panggilan ke fungsi LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken, atau OpenThreadToken . Jika hToken adalah handel ke token utama, token harus memiliki akses TOKEN_QUERY dan TOKEN_DUPLICATE . Jika hToken adalah handel token peniruan, token harus memiliki akses TOKEN_QUERY dan TOKEN_IMPERSONATE .

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Peniruan berlangsung hingga utas keluar atau sampai memanggil RevertToSelf.

Utas panggilan tidak perlu memiliki hak istimewa tertentu untuk memanggil ImpersonateLoggedOnUser.

Jika panggilan ke ImpersonateLoggedOnUser gagal, koneksi klien tidak ditiru dan permintaan klien dibuat dalam konteks keamanan proses. Jika proses berjalan sebagai akun yang sangat istimewa, seperti LocalSystem, atau sebagai anggota grup administratif, pengguna mungkin dapat melakukan tindakan yang jika tidak diizinkan. Oleh karena itu, penting untuk selalu memeriksa nilai pengembalian panggilan, dan jika gagal, munculkan kesalahan; jangan lanjutkan eksekusi permintaan klien.

Semua fungsi peniruan, termasuk ImpersonateLoggedOnUser memungkinkan peniruan yang diminta jika salah satu hal berikut ini benar:

  • Tingkat peniruan token yang diminta kurang dari SecurityImpersonation, seperti SecurityIdentification atau SecurityAnonymous.
  • Pemanggil memiliki hak istimewa SeImpersonatePrivilege .
  • Proses (atau proses lain dalam sesi masuk pemanggil) membuat token menggunakan kredensial eksplisit melalui fungsi LogonUser atau LsaLogonUser .
  • Identitas terautentikasi sama dengan pemanggil.
Windows XP dengan SP1 dan yang lebih lama: Hak istimewa SeImpersonatePrivilege tidak didukung.

Untuk informasi selengkapnya tentang peniruan, lihat Peniruan Klien.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header securitybaseapi.h (termasuk Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

Fungsi Access Control Klien/Server

Gambaran Umum Access Control Klien/Server

CreateProcessAsUser

CreateRestrictedToken

DuplikatToken

DuplikatTokenEx

LogonUser

OpenProcessToken

OpenThreadToken

Kembalikan KeSelf