如果我创建了一个进程,是否意味着我总是能够终止它

If I created a process, does it mean that I will always be able to terminate it?

本文关键字:意味着 是否 终止 进程 创建 一个 如果      更新时间:2023-10-16

说,如果我使用CreateProcess或CreateProcessAsUser api创建了一个进程,这是否意味着调用TerminateProcess (PROCESS_INFORMATION.hProcess)将始终杀死该进程,无论我的主机进程运行在什么上下文(低特权用户,内置Guest等)?

我还没有测试过,但是根据文档,您应该总是能够使用PROCESS_INFORMATION中返回的句柄成功地终止进程。在Windows安全模型中,权限通常只针对正在使用的句柄进行检查,而不是其他。根据MSDN关于进程安全和访问权限的文档:

CreateProcess函数返回的句柄具有PROCESS_ALL_ACCESS对进程对象的访问权。

CreateProcessAsUser的文档支持:

此安全描述符可能不允许调用者访问,在这种情况下进程运行后可能不会再打开。进程句柄为有效,并将继续拥有完全访问权限。

文档中对TerminateProcess给出的唯一权限要求是:

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

因此,CreateProcess和CreateProcessAsUser返回的任何句柄都应该具有必要和足够的访问权限,以允许使用TerminateProcess终止新进程。