Partilhar via


Política de alocação de console

Observação

Este recurso requer o Windows 11 24H2 (build 26100) ou posterior.

A maioria dos aplicativos no Windows são do tipo IMAGE_SUBSYSTEM_WINDOWS_GUI ou IMAGE_SUBSYSTEM_WINDOWS_CUI . O primeiro é um típico aplicativo gráfico em janelas, enquanto o segundo é o que é comumente chamado de console ou aplicativo de terminal. Ao executar um aplicativo marcado como IMAGE_SUBSYSTEM_WINDOWS_CUI será alocado um console, a menos que seja executado dentro de uma sessão de console existente. Além disso, a execução de tal aplicativo dentro de um shell como CMD ou PowerShell será bloqueada até que o aplicativo termine de ser executado. Nenhuma destas opções é verdadeira para IMAGE_SUBSYSTEM_WINDOWS_GUI aplicações. Não será alocado um console, nem impedirá a execução dentro de um shell.

Agora, e se você quiser escrever um aplicativo que pareça um aplicativo gráfico quando executado a partir do Explorer, mas você também pode gravar a saída de depuração no console, se executado dentro de uma sessão de console existente? Para conseguir isso, crie seu aplicativo como um IMAGE_SUBSYSTEM_WINDOWS_CUI (por exemplo, com /SUBSYSTEM:CONSOLE no MSVC) e adicione o seguinte manifesto do aplicativo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <application>
    <windowsSettings>
      <consoleAllocationPolicy xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">detached</consoleAllocationPolicy>
    </windowsSettings>
  </application>
</assembly>

O tipo IMAGE_SUBSYSTEM_WINDOWS_CUI informa os shells que eles precisam bloquear até que seu aplicativo termine de executar, enquanto o manifesto do aplicativo informa o sistema operacional para ignorar a alocação de um console.

Requerimentos

   
Cliente mínimo suportado Windows 11 24H2 (compilação 26100) [apenas aplicações de ambiente de trabalho]
Servidor mínimo suportado Windows Server 2025 (compilação 26100)

Ver também

AllocConsoleWithOptions