我知道DuplicateHandle
的簽名和documentation,我可以從外部(可能不相關的)進程中複製句柄,因爲我擁有權限並知道進程ID和句柄值。真的嗎?我可以使用使用DuplicateHandle的外部進程的句柄嗎?
如果是這樣,必須授予進程和/或句柄哪些權限?
我知道DuplicateHandle
的簽名和documentation,我可以從外部(可能不相關的)進程中複製句柄,因爲我擁有權限並知道進程ID和句柄值。真的嗎?我可以使用使用DuplicateHandle的外部進程的句柄嗎?
如果是這樣,必須授予進程和/或句柄哪些權限?
這是在文檔中描述DuplicateHandle():
hSourceProcessHandle [中]
句柄與進程句柄被複制。
該句柄必須具有PROCESS_DUP_HANDLE訪問權限。
所以對於遠程進程的ACL必須授予您PROCESS_DUP_HANDLE
並調用OpenProcess()當你必須請求權。
手柄本身沒有ACL。假設您有PROCESS_DUP_HANDLE
,您可以在此過程中複製任何有效的句柄。
是的,我看過它,但我寫的代碼總是返回'INVALID_HANDLE_VALUE'。事實證明,該錯誤是在搜索句柄值的代碼的另一部分。無論如何,感謝您的確認:) –
是的,如果您可以使用PROCESS_DUP_HANDLE訪問權限打開它,那麼您將從任何進程複製句柄。如果你知道進程ID - 可以打開進程。約手柄許可,使用通常DUPLICATE_SAME_ACCESS標誌和你有相同的權限在新的處理
您可能還需要一些同步。你需要PID,但你也需要確保進程已經打開了句柄('WaitForInputIdle'有時是有用的)。擁有的過程也不能關閉句柄(或關閉),直到你複製它。 – cdarke