2016-08-01 74 views
0

我知道DuplicateHandle的簽名和documentation,我可以從外部(可能不相關的)進程中複製句柄,因爲我擁有權限並知道進程ID和句柄值。真的嗎?我可以使用使用DuplicateHandle的外部進程的句柄嗎?

如果是這樣,必須授予進程和/或句柄哪些權限?

+1

您可能還需要一些同步。你需要PID,但你也需要確保進程已經打開了句柄('WaitForInputIdle'有時是有用的)。擁有的過程也不能關閉句柄(或關閉),直到你複製它。 – cdarke

回答

0

這是在文檔中描述DuplicateHandle()

hSourceProcessHandle [中]

句柄與進程句柄被複制。

該句柄必須具有PROCESS_DUP_HANDLE訪問權限。

所以對於遠程進程的ACL必須授予您PROCESS_DUP_HANDLE並調用OpenProcess()當你必須請求權。

手柄本身沒有ACL。假設您有PROCESS_DUP_HANDLE,您可以在此過程中複製任何有效的句柄。

+0

是的,我看過它,但我寫的代碼總是返回'INVALID_HANDLE_VALUE'。事實證明,該錯誤是在搜索句柄值的代碼的另一部分。無論如何,感謝您的確認:) –

0

是的,如果您可以使用PROCESS_DUP_HANDLE訪問權限打開它,那麼您將從任何進程複製句柄。如果你知道進程ID - 可以打開進程。約手柄許可,使用通常DUPLICATE_SAME_ACCESS標誌和你有相同的權限在新的處理

相關問題