7

Меня часто разочаровывает консольное хост-приложение Windows, особенно то, как неуклюже работает буфер обмена, проблемы отсутствия автоматической ширины и т.д. Я хотел бы знать, есть ли способ заменить консольный хост по умолчанию conhost.exe на собственный. и где я мог бы найти больше информации об интерфейсах, которые мне пришлось бы реализовать, если бы я написал свой собственный.

Я не ищу только альтернативную консоль, я уже использую xterm от CygWin. Я ищу информацию о том, как заменить хост по умолчанию окна консоли Windows.

4 ответа4

7

Ниже приведены некоторые хорошие продукты для замены консоли, более удобные для пользователя, чем cmd.

Как указано ниже, начиная с Windows 7, все эти оболочки являются просто интерфейсом для conhost.exe, даже powershell. Для получения дополнительной информации прочитайте, что такое conhost.exe и почему он работает.

Поэтому приведенные ниже консоли заменяют визуальный интерфейс по умолчанию только на conhost, представленный cmd, и полезны только при непосредственном вызове в качестве программ. Они не могут быть вызваны косвенно, например, когда запускается исполняемый консоль, такой как diskpart, так как это вызовет conhost, а conhost имеет свой собственный интерфейс ввода-вывода и API.

Вот что говорит Microsoft в Windows 7 / Windows Server 2008 R2: Консольный хост :

ConHost представляет собой постоянное изменение в способе обработки ввода-вывода консольного приложения. Отсутствует раздел реестра или параметр групповой политики, которые могут заставить Windows вернуться к поведению консоли в «устаревшем режиме».

Вывод таков: если вы хотите заменить консоль более глубоким способом, чем замена интерфейса cmd, то это невозможно. Microsoft выбрала этот дизайн в качестве меры безопасности и не вернется.

Единственный способ, которым я могу придумать, чтобы изменить поведение conhost, - это установить глобальную системную хук на API conhost. Я вообще не знаю, возможно ли это, и никто до сих пор этого не делал (или, если они сделали, они не говорят). Я также не верю, что Microsoft позволит вам заменить такой критически важный системный файл, как conhost.exe, взломанной версией.

Если требуется замена cmd, который находится в system32\cmd.exe, нужно взять файл в собственность, а затем переименовать его (cmd1.exe?), Переименовать exe-файл для замены консоли в cmd.exe и скопировать в system32 вместе с все файлы, необходимые для работы. Это может вызвать проблемы, если консоль замены не поддерживает все параметры, которые поддерживает cmd.

Другой подход, который работает с файлами .bat, - связать с ними новую консоль. Для этого нужно отредактировать ключ реестра HKEY_CLASSES_ROOT\batfile\shell\open\command . Смотрите эту статью для некоторых деталей.

Вот список консолей:

ColorConsole
FireCMD
PowerCmd
gs.exe
PyCmd

5

Существуют такие программы, как Console, которые работают с cmd.exe и, вероятно, могут дать вам то, что вы ищете, но я не видел ничего такого, что могло бы заменить консольную систему. AFAIK, большинство проектов такого типа просто перенаправляют stdin/stdout/stderr, а затем оборачивают более общий графический интерфейс вокруг cmd.exe, скрывая фактическое окно консоли в фоновом режиме.

0

Как уже говорили другие, похоже, что нельзя просто заменить хост консоли как таковой. Есть еще один проект, который использует трюки, чтобы скрыть пользовательский интерфейс conhost и показать свой собственный, который еще не был упомянут: ConEmu.

Не являясь полной заменой conhost, вы должны запустить целевую программу через ConEmu, чтобы это имело эффект. Просто запустив консольную программу через окно «Выполнить», вы увидите интерфейс conhost.

-1

Я бы порекомендовал установить либо PowerShell, который является версией Microsoft для Unix-терминала, предназначенного для сценариев, трубопроводов и т.д., Либо Microsoft Services для Unix (ранее известный как SFU), который на самом деле представляет собой целую подсистему Posix для Windows, работающую непосредственно поверх ядро (т. е. вместе с WIN32 и Windows API, а не поверх него. опять же, то есть оно не эмулируется, это в основном Unix) и позволит вам использовать любую (ну, большинство) из технологий * nix и оболочек. Обидно, что Сервисы для Unix не набрали оборотов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .