我可以使用DuplicateHandle来使用外部进程的句柄吗?

时间:2016-08-01 14:36:09

标签: c++ c windows winapi

我从DuplicateHandle的签名和documentation了解到我可以从外部(可能不相关的)进程复制句柄,因为我有权限并且知道进程ID和句柄值。这是真的吗?

如果是,那么必须向进程和/或句柄授予哪些权限?

2 个答案:

答案 0 :(得分:0)

是的,如果您可以使用PROCESS_DUP_HANDLE访问权限打开它,则任何进程都有重复的句柄。如果你知道进程ID - 可能你可以打开进程。关于句柄权限,通常使用DUPLICATE_SAME_ACCESS标志,你在新句柄中获得相同的权限

答案 1 :(得分:0)

DuplicateHandle()的文档中描述了这一点:

  

hSourceProcessHandle [in]

     

要复制句柄的进程句柄。

     

句柄必须具有PROCESS_DUP_HANDLE访问权限。

因此,远程流程的ACL必须授予您PROCESS_DUP_HANDLE,并且您必须在调用OpenProcess()时请求该权限。

句柄本身没有ACL。如果您有PROCESS_DUP_HANDLE,则可以在此过程中复制任何有效句柄。