比如说,如果我使用CreateProcess或CreateProcessAsUser API创建了一个进程,这是否意味着无论我的主机在什么上下文中,调用TerminateProcess (PROCESS_INFORMATION.hProcess)
都会终止该进程进程正在运行(低权限用户,内置Guest等)?
答案 0 :(得分:4)
我还没有对它进行测试,但根据文档,您应该始终能够使用PROCESS_INFORMATION中返回的句柄成功终止进程。在Windows安全模型中,通常仅针对正在使用的句柄检查权限,而不是其他任何内容。根据{{3}}上的MSDN文档:
CreateProcess函数返回的句柄具有 PROCESS_ALL_ACCESS 访问过程对象的权限。
CreateProcessAsUser的文档支持以下内容:
在这种情况下,此安全描述符可能不允许调用者访问 运行后可能无法再次打开该进程。进程句柄是 有效且将继续拥有完全访问权限。
TerminateProcess文档中唯一的权限要求是:
句柄必须具有 PROCESS_TERMINATE 访问权限。
因此,CreateProcess和CreateProcessAsUser返回的任何句柄都应具有必要且足够的访问权限,以允许使用TerminateProcess终止新进程。