适用于Windows 7 / Windows Server 2008的备用控制台主机

Modified on: Sun, 10 Feb 2019 11:20:02 +0800

我常常对Windows的控制台主机应用程序感到沮丧,特别是剪贴板工作的笨拙,无自动宽度问题等等。我想知道是否有办法替换默认控制台主机conhost.exe,如果我自己编写,我可以在哪里找到有关接口的更多信息。

我不只是寻找替代控制台,我已经使用了CygWin的xterm。我正在寻找有关如何替换 Windows'默认控制台窗口主机的信息。

作者:,Tibor

最佳答案

以下是一些比cmd更友好的控制台替换产品。

如下所述,自Windows 7以来,所有这些shell都只是conhost.exe的接口,甚至是PowerShell。有关详细信息,请参阅什么是conhost.exe及其运行原因

因此,下面的控制台仅将默认的可视界面替换为cmhost所展示的conhost,并且仅在直接作为程序调用时才有用。
它们不能间接调用,因为当运行诸如diskpart之类的控制台可执行文件时,因为这将调用conhost,并且conhost具有自己的I / O接口和API。

以下是微软在Windows 7 / Windows Server 2008 R2:控制台主机

  

ConHost代表了控制台方式的永久性变化
  应用程序I / O被处理。没有注册表项或组策略
  设置可以强制Windows恢复到“传统模式”控制台
  行为。

结论是,如果您希望以更换方式更深入地更换控制台
cmd接口,那是不可能的。微软选择这种设计作为安全措施,不会再回头了。

我能想到改变conhost行为方式的唯一方法是设置全局系统挂钩
在conhost API上。我根本不知道这是否可行,到目前为止还没有人做过
(或者,如果他们这样做,他们没有说明)。
我也不相信
Microsoft将允许您将这样一个至关重要的系统文件替换为conhost.exe
被黑客攻击的版本。

如果需要替换cmd,它位于system32 \ cmd.exe中,则需要获取该文件的所有权,然后将其重命名(cmd1.exe?),将console-replacement exe重命名为cmd.exe并复制到system32以及它工作所需的所有文件。如果替换控制台不支持cmd所做的所有参数,这可能会导致问题。

另一种适用于.bat文件的方法是将新控制台与它们相关联。为此,需要编辑注册表项HKEY_CLASSES_ROOT\batfile\shell\open\command。有关详细信息,请参阅此文章

以下是控制台列表:

ColorConsole
FireCMD
PowerCmd
GS.EXE
PyCmd

作者:Community,harrymc

相关问答

添加新评论