Host de console alternativo para o Windows 7 / Windows Server 2008

7

Eu sou frequentemente frustrado com o aplicativo host do console do Windows, especialmente o quão desajeitadamente a área de trabalho funciona, sem problemas de largura automática etc. Eu gostaria de saber se existe uma maneira de substituir o host de console padrão conhost.exe por um personalizado e onde eu poderia encontrar mais informações sobre as interfaces que eu teria que implementar se eu fosse escrever o meu próprio.

Eu não estou procurando apenas por um console alternativo, eu já uso xterm do CygWin. Estou procurando informações sobre como substituir o host da janela do console padrão do Windows.

    
por Tibor 16.04.2012 / 17:01

4 respostas

7

Abaixo estão alguns bons produtos de substituição de consoles que são mais fáceis de usar que o cmd.

Como comentado abaixo, desde o Windows 7, todos esses shells são apenas uma interface para o conhost.exe, até mesmo o powershell. Para obter detalhes, leia O que é conhost.exe e por que Está funcionando .

Portanto, os consoles abaixo apenas substituem a interface visual padrão para o conhost, que é o exibido pelo cmd, e são úteis apenas quando chamados diretamente como programas. Eles não podem ser invocados indiretamente, como quando um executável de console como o diskpart é executado, já que isso invocará conhost e o conhost tem sua própria interface de E / S e API.

Veja o que a Microsoft diz em Windows 7 / Windows Server 2008 R2: Host do console :

ConHost represents a permanent change in the way that console application I/O is handled. There is no registry key or group policy setting that can force Windows to revert back to “legacy mode” console behavior.

A conclusão é que, se você quiser substituir o console de maneira mais profunda do que substituir a interface cmd, então isso não é possível. A Microsoft escolheu esse design como uma medida de segurança e não voltará atrás.

A única maneira que posso pensar em mudar a maneira como o conhost está se comportando é definir um gancho de sistema global na API do conhost. Eu não sei se isso é possível e ninguém fez isso até agora (ou se eles não estão dizendo). Eu também não acredito que a Microsoft permitirá que você substitua um arquivo de sistema crucialmente importante como conhost.exe por uma versão hackeada.

Se for necessário substituir o cmd, que reside no system32 \ cmd.exe, é necessário apropriar-se do arquivo e renomeá-lo (cmd1.exe?), renomear o exe de substituição do console para cmd.exe e copiar para system32 juntamente com todos os arquivos necessários para que ele funcione. Isso pode causar problemas se o console de substituição não suportar todos os parâmetros que o cmd faz.

Outra abordagem que funciona para arquivos .bat é associar o novo console a eles. Para isso, é necessário editar a chave de registro HKEY_CLASSES_ROOT\batfile\shell\open\command . Consulte este artigo para obter alguns detalhes.

Aqui está a lista de consoles:

ColorConsole
FireCMD
PowerCmd
GS.EXE
PyCmd

    
por 19.04.2012 / 09:23
5

Existem programas como Console que envolvem o cmd.exe e provavelmente podem fornecer o que você está procurando, mas Eu não vi nada tão completo em substitui o sistema de console. AFAIK, a maioria desses tipos de projetos simplesmente redireciona stdin / stdout / stderr e, em seguida, envolve uma GUI mais comum em torno do cmd.exe, ocultando a janela real do console em segundo plano.

    
por 17.04.2012 / 02:21
0

Como outros já disseram, parece que não se pode simplesmente substituir o host do console como tal. Há outro projeto que usa truques para ocultar a interface do usuário mais recente e mostrar seus próprios que ainda não foram mencionados: ConEmu .

Não sendo uma substituição completa do conhost, você tem que executar o programa alvo através do ConEmu para que isso tenha efeito. A simples execução de um programa de console pela janela Executar ainda mostrará a interface do usuário mais conhecida.

    
por 27.03.2013 / 13:17
-1

Eu recomendaria a instalação do PowerShell , que é a versão da Microsoft de um terminal unix destinado a scripts, tubulações etc. ou o Serviços Microsoft para Unix (anteriormente conhecido como SFU) que é na verdade um subsistema Posix inteiro para o Windows, operando diretamente no topo do kernel (ou seja, ao lado do WIN32 e da API do Windows, não em cima dele. novamente, isto é, ele não é emulado, é basicamente Unix) e permitirá que você use qualquer (bem, a maioria) das tecnologias e shells do * nix. É uma pena que os Serviços para Unix não tenham ganhado mais tração.

    
por 19.04.2012 / 01:06