애플리케이션에 대한 지침

Windows Vista 및 Windows Server 2008에서 실행되는 애플리케이션은 업데이트를 설치하는 데 필요한 경우 다시 시작 관리자가 애플리케이션을 종료하고 다시 시작할 수 있도록 이러한 지침을 준수해야 합니다. 서비스는 서비스 지침에 설명된 지침을 사용할 수 있습니다.

  • Restart Manager는 lParam 매개 변수가 ENDSESSION_CLOSEAPP(0x1)로 설정된 WM_QUERYENDSESSION 알림을 보내 GUI 애플리케이션에서 종료를 쿼리합니다. 다른 애플리케이션을 종료할 준비가 되지 않았기 때문에 WM_QUERYENDSESSION 메시지를 받을 때 애플리케이션이 종료되지 않아야 합니다. GUI 애플리케이션은 WM_QUERYENDSESSION 메시지를 수신 대기하고 애플리케이션을 종료하고 다시 시작할 준비가 되면 TRUE 값을 반환해야 합니다. FALSE 값을 반환하는 애플리케이션이 없는 경우 Restart Manager는 lParam 매개 변수가 ENDSESSION_CLOSEAPP(0x1)로 설정되고 wparam 매개 변수가 TRUE로 설정된 WM_ENDSESSION 메시지를 보냅니다. 애플리케이션은 WM_ENDSESSION 메시지를 받을 때만 종료해야 합니다. 또한 Restart Manager는 WM_ENDSESSION 수신을 종료하지 않는 GUI 애플리케이션에 대한 WM_CLOSE 메시지를 보냅니다. GUI 애플리케이션이 FALSE 값을 반환하여 WM_QUERYENDSESSION 메시지에 응답하면 종료가 취소됩니다. 그러나 종료가 강제로 수행되면 애플리케이션이 종료됩니다.

  • GUI 애플리케이션이 WM_ENDSESSION 메시지를 받으면 애플리케이션은 지정된 시간 제한 기간 내에 종료하도록 준비해야 합니다. 최소한 애플리케이션은 다시 시작한 후 필요한 사용자 데이터 및 상태 정보를 저장하여 준비해야 합니다. 애플리케이션은 사용자 데이터와 상태를 주기적으로 저장하는 것이 좋습니다.

  • 다시 시작 관리자는 종료하고 다시 시작해야 하는 콘솔 애플리케이션에 CTRL_C_EVENT 알림을 보냅니다. 콘솔 애플리케이션이 CTRL_C_EVENT 알림을 받으면 애플리케이션은 지정된 시간 제한 기간 내에 종료를 준비하는 데 필요한 조치를 취해야 합니다. 최소한 콘솔 애플리케이션은 CTRL_C_EVENT 알림을 처리하도록 HandlerRoutine 함수를 정의해야 하며 다시 시작한 후 필요한 모든 사용자 데이터 및 상태 정보를 저장해야 합니다. 애플리케이션은 사용자 데이터와 상태를 주기적으로 저장하는 것이 좋습니다.

  • 종료 메시지에 대한 응답으로 애플리케이션이 종료되지 않는 경우 설치 관리자는 RmShutdown 함수의 RmForceShutdown 옵션을 사용하여 애플리케이션을 강제로 종료할 수 있습니다. 설치 관리자가 강제 종료를 지정하면 Restart Manager는 종료 메시지를 전송하여 애플리케이션을 완전히 종료하려고 시도하지만 실패하면 강제로 종료됩니다. GUI 애플리케이션 및 콘솔 애플리케이션을 강제로 종료하여 중요한 보안 업데이트를 설치할 수 있습니다. 이로 인해 데이터가 손실 될 수 있으므로 애플리케이션은 종료 메시지를 처리하고 필요한 경우 완전히 종료해야 합니다.

  • 애플리케이션은 RegisterApplicationRestart 함수를 사용하여 다시 시작을 등록해야 합니다. 다시 시작 관리자는 다시 시작에 등록된 애플리케이션만 다시 시작할 수 있습니다. 이는 다시 시작 관리자가 애플리케이션을 다시 시작할 때 사용할 명령줄 명령을 결정할 수 있는 유일한 방법입니다. 애플리케이션이 일부 저장된 상태 또는 데이터로 다시 열어야 하는 경우 해당 정보는 애플리케이션에 등록된 명령줄 명령에 포함되어야 합니다.

    참고

    다시 시작한 애플리케이션이 종료되기 전에 실행된 동일한 디렉터리에서 실행되어야 하는 경우 애플리케이션은 디렉터리 정보를 저장한 다음 다시 시작한 후 디렉터리로 변경해야 합니다.

     

    참고

    RmRestart 함수는 현재 로그온한 사용자로 실행되지 않는 애플리케이션을 다시 시작하지 않습니다. 예를 들어 RmRestart 함수는 현재 로그온한 사용자로 실행되지 않는 실행 명령으로 시작된 애플리케이션을 다시 시작하지 않습니다. 이러한 애플리케이션은 수동으로 다시 시작해야 합니다.

     

  • Restart Manager에서 업데이트를 설치하는 데 시스템 다시 시작이 필요하다고 판단되면 애플리케이션 및 서비스가 종료되지 않습니다. 대신 시스템 다시 시작을 예약하고 업데이트를 설치할 시기를 결정하기 위해 설치 관리자에게 둡니다. 설치 관리자는 EWX_RESTARTAPPS 플래그가 있는 ExitWindowsEx 함수 또는 SHUTDOWN_RESTARTAPPS 플래그가 있는 InitiateShutdown 함수를 사용하여 시스템을 다시 시작해야 하는 업데이트로 인한 사용자 중단을 줄일 수 있습니다. 이러한 플래그를 사용하면 시스템을 다시 부팅한 후 다시 시작하도록 등록된 애플리케이션이 다시 시작되어 사용자에게 미치는 영향을 최소화할 수 있습니다.