我有一个HANDLE
进程,可能是也可能不是当前正在运行的进程的句柄。以下是有关句柄对象的知识:
PROCESS_TERMINATE
访问权限。GetCurrentProcess
的返回值。有没有办法知道句柄是否属于当前流程?
我考虑过使用GetProcessId
,但遗憾的是它因访问被拒绝错误而失败,因为句柄没有PROCESS_QUERY_LIMITED_INFORMATION
访问权限。
答案 0 :(得分:1)
如果您对目标流程有足够的访问权限,则可以使用DuplicateHandle()使用PROCESS_QUERY_LIMITED_INFORMATION
访问权限为其创建新句柄。然后,您可以使用此句柄获取进程ID。
除非您的进程修改自己的安全权限,否则它应始终(至少)PROCESS_QUERY_LIMITED_INFORMATION
访问自身,因此如果重复处理失败且访问被拒绝错误,则句柄不太可能指向您的进程
如果你想绝对肯定,你可以尝试按进程ID打开进程的句柄 - 如果失败那么有人正在搞乱ACL并且所有的赌注都已关闭。 : - )