다음을 통해 공유


종료 중

애플리케이션이 로컬 또는 원격 컴퓨터를 종료하는 방법에는 세 가지가 있습니다.

  • 시스템 종료
  • 시스템을 종료하고 다시 시작합니다.
  • 애플리케이션을 종료하고, 시스템을 종료 및 다시 시작하고, 다시 시작하기 위해 등록된 모든 애플리케이션을 다시 시작합니다.

시스템을 종료하려면 exitWindowsEx 함수를 EWX_SHUTDOWN 플래그와 함께 사용합니다. 예를 들어 시스템을 종료하는 방법을 참조하세요. 시스템을 종료하고 다시 시작하려면 EWX_REBOOT 플래그를 사용합니다. RegisterApplicationRestart 함수를 사용하여 다시 시작하도록 등록된 애플리케이션을 다시 시작하려면 EXW_RESTARTAPPS 플래그를 사용합니다.

InitiateShutdown, InitiateSystemShutdownInitiateSystemShutdownEx 함수는 타이머를 시작하고 사용자에게 로그오프하라는 대화 상자를 표시합니다. 이 대화 상자가 표시되는 동안 AbortSystemShutdown 함수는 타이머를 중지하고 컴퓨터가 종료되지 않도록 할 수 있습니다. 그러나 타이머가 만료되면 컴퓨터가 종료됩니다. 이러한 함수는 종료 작업 후 컴퓨터를 다시 시작할 수도 있습니다. 자세한 내용은 종료 대화 상자 표시를 참조하세요.

종료 알림

창 및 메시지 큐가 있는 애플리케이션은 WM_QUERYENDSESSIONWM_ENDSESSION 메시지를 통해 종료 알림을 받습니다. 이러한 애플리케이션은 종료될 수 있음을 나타내기 위해 TRUE 를 반환해야 합니다. 애플리케이션은 반드시 필요한 경우가 아니면 시스템 종료를 차단해서는 안 됩니다. 애플리케이션은 WM_ENDSESSION 처리하는 동안 필요한 정리를 수행해야 합니다. 저장되지 않은 데이터가 있는 애플리케이션은 데이터를 임시 위치에 저장하고 다음에 애플리케이션이 시작될 때 복원할 수 있습니다. 애플리케이션은 데이터와 상태를 자주 저장하는 것이 좋습니다. 예를 들어 사용자가 시작한 저장 작업 간에 데이터를 자동으로 저장하여 종료 시 저장할 데이터의 양을 줄입니다.

콘솔 애플리케이션은 처리기 루틴에서 종료 알림을 받습니다. 콘솔 처리기를 등록하려면 SetConsoleCtrlHandler 함수를 사용합니다.

서비스 애플리케이션은 처리기 루틴에서 종료 알림을 받습니다. 서비스 제어 처리기를 등록하려면 RegisterServiceCtrlHandlerEx 함수를 사용합니다.

차단 종료

애플리케이션이 잠재적인 시스템 종료를 차단해야 하는 경우 ShutdownBlockReasonCreate 함수를 호출할 수 있습니다. 호출자는 사용자에게 표시될 이유 문자열을 제공합니다. 문자열이 짧고 명확해야 하는 이유는 사용자에게 시스템 종료를 계속할지 여부를 결정하는 데 필요한 정보를 제공합니다.

시스템을 종료하는 방법