我经常对 Windows 的控制台主机应用程序感到沮丧,尤其是剪贴板的工作方式很笨拙,没有自动宽度问题等。我想知道是否有办法conhost.exe用自定义的控制台主机替换默认的控制台主机,在哪里可以如果我要编写自己的接口,我会找到有关必须实现的接口的更多信息。
我不只是在寻找替代控制台,我已经xterm在 CygWin 中使用了。我正在寻找有关如何替换Windows 的默认控制台窗口主机的信息。
下面是一些不错的控制台替代产品,它们比 cmd 更用户友好。
如下所述,从 Windows 7 开始,所有这些 shell 都只是 conhost.exe 的接口,甚至是 powershell。有关详细信息,请阅读什么是 conhost.exe 以及它为何运行。
因此,下面的console只是替换了cmd展示的conhost默认的可视化界面,只有作为程序直接调用才有用。它们不能被间接调用,因为当运行诸如 diskpart 之类的控制台可执行文件时,因为这将调用 conhost,并且 conhost 有自己的 I/O 接口和 API。
以下是 Microsoft 在Windows 7 / Windows Server 2008 R2 中所说的:控制台主机:
ConHost 代表了控制台应用程序 I/O 处理方式的永久性改变。没有可以强制 Windows 恢复到“传统模式”控制台行为的注册表项或组策略设置。
结论是,如果你希望以比替换cmd界面更深入的方式替换控制台,那么这是不可能的。微软已经选择了这种设计作为安全措施,并且不会再回去了。
我能想到的改变 conhost 行为方式的唯一方法是在 conhost API 上设置一个全局系统挂钩。我完全不知道这是否可能,到目前为止还没有人做过(或者他们没有告诉)。我也不相信微软会让你用一个黑客版本替换像 conhost.exe 这样一个至关重要的系统文件。
如果需要替换位于system32\cmd.exe中的cmd,则需要取得该文件的所有权,然后重命名(cmd1.exe?),将console-replacement exe重命名为cmd.exe,然后复制到system32它工作所需的所有文件。如果替换控制台不支持 cmd 的所有参数,这可能会导致问题。
另一种适用于 .bat 文件的方法是将新控制台与它们相关联。为此需要编辑注册表项HKEY_CLASSES_ROOT\batfile\shell\open\command。有关详细信息,请参阅此文章。
这是控制台列表:
ColorConsole
FireCMD
PowerCmd
GS.EXE
PyCmd
| 归档时间: |
|
| 查看次数: |
4608 次 |
| 最近记录: |