OpenProcess 函式 (processthreadsapi.h)

開啟現有的本機進程物件。

語法

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

參數

[in] dwDesiredAccess

進程物件的存取權。 系統會針對進程的安全性描述項檢查此存取權。 此參數可以是一或多個 進程訪問許可權

如果呼叫端已啟用 SeDebugPrivilege 許可權,則不論安全性描述元的內容為何,都會授與要求的存取權。

[in] bInheritHandle

如果此值為TRUE,此進程所建立的進程將會繼承句柄。 否則,進程不會繼承此句柄。

[in] dwProcessId

要開啟之本機進程的標識碼。

如果指定的行程是系統閒置行程 (0x00000000) ,則函式會失敗,而最後一個錯誤碼為 ERROR_INVALID_PARAMETER。 如果指定的進程是系統進程或其中一個 Client Server Run-Time 子系統 (CSRSS) 進程,則此函式會失敗,而最後一個錯誤碼是因為 ERROR_ACCESS_DENIED 其存取限制會防止用戶層級的程式代碼開啟。

如果您使用 GetCurrentProcessId 作為此函式的自變數,請考慮使用 GetCurrentProcess 而非 OpenProcess 來改善效能。

傳回值

如果函式成功,傳回值會是指定進程的開啟句柄。

如果函式失敗,傳回值為NULL。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

若要開啟另一個本機進程的句柄並取得完整的訪問許可權,您必須啟用 SeDebugPrivilege 許可權。 如需詳細資訊,請參閱 變更令牌中的許可權

OpenProcess 函式所傳回的句柄可用於任何需要處理程式句柄的函式,例如等候函式,前提是要求適當的訪問許可權。

當您完成句柄時,請務必使用 CloseHandle 函式將其 關閉。

範例

如需範例,請參閱 擷取快照集和檢視程式

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

處理序和執行緒函式

程序

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory