Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows中注销用户会话是如何杀死的;“不可质疑的”;过程?_Windows_Debugging_Process - Fatal编程技术网

在Windows中注销用户会话是如何杀死的;“不可质疑的”;过程?

在Windows中注销用户会话是如何杀死的;“不可质疑的”;过程?,windows,debugging,process,Windows,Debugging,Process,我启动了一个处于“暂停”状态的进程。我无法通过任何正常方式(process explorer、task manager、WinDbg)终止或恢复此进程 但注销会话确实会终止此进程。怎么用?当我注销时,操作系统使用的机制与Process Explorer的尝试有所不同 编辑:澄清一下-我假设Process Explorer在试图终止进程时正在调用TerminateProcess API函数。但进程状态中的某些内容正在阻止此操作。注销显然会调用一些不同的行为,Windows会忽略阻止Terminat

我启动了一个处于“暂停”状态的进程。我无法通过任何正常方式(process explorer、task manager、WinDbg)终止或恢复此进程

但注销会话确实会终止此进程。怎么用?当我注销时,操作系统使用的机制与Process Explorer的尝试有所不同

编辑:澄清一下-我假设Process Explorer在试图终止进程时正在调用TerminateProcess API函数。但进程状态中的某些内容正在阻止此操作。注销显然会调用一些不同的行为,Windows会忽略阻止TerminateProcess的内容,并由于会话结束而终止进程


作为用户,除了调用TerminateProcessAPI之外,还有其他方法来尝试和终止进程吗?

process Explorer不能终止进程本身;它只能要求操作系统这样做。操作系统本身不必遵循自己的规则


请记住,是操作系统本身定义了流程。它可以很好地将流程定义为登录会话的一部分。这意味着,如果清理整个会话,则不需要清理单个进程。就像你在退出程序之前也不需要麻烦处理
CloseHandle

这可能不是Windows有意做的事情。我的猜测是,任何导致进程停滞的因素(必须处于内核模式,可能是有故障的防病毒软件或有故障的设备驱动程序)都会在正确的情况下自行纠正,而注销会导致这种情况发生。看起来,注销解决了这个问题可能只是巧合。另一方面,当窗口站被删除时(例如),内核使用ZwTerminateProcess终止所有剩余的进程,并且可能从内核模式发出调用会绕过任何干扰原始进程的因素,这是有道理的。不过,要检验这一理论并不容易。在任何情况下,你最好解决最初的问题,而不是试图解决它-这不是正常的行为。