다음을 통해 공유


콘솔 할당 정책

비고

이 기능을 사용하려면 Windows 11 24H2(빌드 26100) 이상이 필요합니다.

Windows의 대부분의 애플리케이션은 IMAGE_SUBSYSTEM_WINDOWS_GUI 또는 IMAGE_SUBSYSTEM_WINDOWS_CUI 유형입니다. 전자는 일반적인 그래픽 창 애플리케이션인 반면, 후자는 일반적으로 콘솔 또는 터미널 애플리케이션이라고 합니다. IMAGE_SUBSYSTEM_WINDOWS_CUI 표시된 애플리케이션을 실행하는 경우 기존 콘솔 세션 내에서 실행되지 않는 한 콘솔이 할당됩니다. 또한 CMD 또는 PowerShell과 같은 셸 내에서 이러한 애플리케이션을 실행하면 애플리케이션 실행이 완료될 때까지 차단됩니다. 이러한 두 가지 모두 IMAGE_SUBSYSTEM_WINDOWS_GUI 애플리케이션에는 해당되지 않습니다. 콘솔을 할당하거나 셸 내에서 실행을 차단하지 않습니다.

이제 탐색기에서 실행할 때 그래픽 애플리케이션처럼 보이지만 기존 콘솔 세션 내에서 실행되는 경우 콘솔에 디버그 출력을 쓸 수 있는 애플리케이션을 작성하려면 어떻게 해야 할까요? 이를 위해 애플리케이션을 IMAGE_SUBSYSTEM_WINDOWS_CUI (예: MSVC의 /SUBSYSTEM:CONSOLE 포함)로 빌드하고 다음 애플리케이션 매니페스트를 추가합니다.

<?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>

IMAGE_SUBSYSTEM_WINDOWS_CUI 형식은 애플리케이션이 실행을 완료할 때까지 셸이 차단해야 한다고 알려주며, 애플리케이션 매니페스트는 운영 체제에 콘솔 할당을 생략하도록 알립니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 11 24H2(빌드 26100) [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2025(빌드 26100)

참고하십시오

AllocConsoleWithOptions