共用方式為


NtOpenProcessToken 函式 (ntifs.h)

NtOpenProcessToken 例程會開啟與進程相關聯的存取令牌,並傳回可用來存取該令牌的句柄。

語法

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
  [in]  HANDLE      ProcessHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [out] PHANDLE     TokenHandle
);

參數

[in] ProcessHandle

處理要開啟其存取令牌的進程。 句柄必須具有PROCESS_QUERY_INFORMATION存取權。 使用 NtCurrentProcess 巨集,定義於 Ntddk.h中,以指定目前的進程。

[in] DesiredAccess

ACCESS_MASK 結構,指定存取令牌的要求存取類型。 這些要求的存取類型會與令牌的任意訪問控制清單(DACL)進行比較,以判斷要授與或拒絕哪些存取權。

[out] TokenHandle

呼叫端配置的變數指標,該變數會接收新開啟存取令牌的句柄。

傳回值

NtOpenProcessToken 會傳回STATUS_SUCCESS或適當的錯誤狀態。 可能的錯誤狀態代碼包括下列專案:

傳回碼 描述
STATUS_ACCESS_DENIED ProcessHandle 沒有PROCESS_QUERY_INFORMATION存取權。
STATUS_INSUFFICIENT_RESOURCES 無法配置新的令牌句柄。
STATUS_INVALID_HANDLE ProcessHandle 不是有效的句柄。
STATUS_OBJECT_TYPE_MISMATCH ProcessHandle 不是進程句柄。
STATUS_PRIVILEGE_NOT_HELD 呼叫端沒有建立令牌句柄所需的許可權 (SeSecurityPrivilege),其存取權 是在 desiredAccess 參數中指定的存取權。
STATUS_QUOTA_EXCEEDED 進程的記憶體配額不足以配置令牌句柄。
STATUS_UNSUCCESSFUL 無法建立令牌句柄。

言論

若要指定存取令牌句柄的屬性,請改用 NtOpenProcessTokenEx

進程可以存取句柄,其內容是驅動程式正在執行。

呼叫 NtOpenProcessToken 取得的任何句柄,最終都必須呼叫 NtClose來釋放。

如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程式開發人員的 Windows 安全性模型,以及 Windows SDK 中這些主題的檔。

對於內核模式驅動程式的呼叫,NtXxxZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxxZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

要求

要求 價值
標頭 ntifs.h
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另請參閱

ACCESS_MASK

ACL

PsDereferencePrimaryToken

NtClose

NtOpenProcessTokenEx

NtOpenThreadTokenEx