为什么打开cmd.exe会导致运行2个进程?

为什么打开cmd.exe会导致运行2个进程?

前:

https://i.stack.imgur.com/hAAwe.png

后:

https://i.stack.imgur.com/zto8Y.png

如您所见,进程数从 103 增加到 105,增加了 2 个!为什么要增加 2 个?我只运行了cmd.exe到目前为止一个进程!

答案1

conhost.exe运行时也会启动cmd.exe。检查此 MS 线程了解更多信息。

答案2

当你运行 时cmd.exe,第二个名为 的进程conhost.exe始终会启动。这就是你看到另外 2 个进程的原因。这Windows 7 中添加了 conhost.exe,以提高安全性:

在以前版本的 Windows 中,所有代表在桌面上运行的非 GUI 应用程序(控制台应用程序)的 GUI 活动均由系统进程 CSRSS.exe 代理。当控制台应用程序想要接收字符时,它会调用 Kernel32.dll 中实现的一小组“控制台 API”之一,然后 Kernel32 向 CSRSS 发出 LPC 调用。CSRSS 检查与控制台窗口关联的输入队列,并通过 Kernel32 将适当的字符模式输入返回给控制台应用程序。

问题在于,即使应用程序在普通用户帐户的上下文中运行,CSRSS.EXE 也会在本地系统帐户下运行。因此,在某些情况下,恶意软件可能会利用应用程序中的漏洞,在 CSRSS.EXE 中权限更高的本地系统帐户下执行代码。这种漏洞被称为“破坏性攻击”。

Windows 7 和 Windows Server 2008 R2 通过在新的进程 ConHost.exe 上下文中运行控制台消息传递代码解决了此问题。ConHost(控制台主机)与其关联的控制台应用程序在相同的安全上下文中运行。请求不会向 CSRSS 发出 LPC 请求进行消息处理,而是转到 ConHost。因此,任何利用应用程序的消息处理代码的尝试都不会导致权限自动提升。

所以请放心,您的 Windows 一切正常。

相关内容