다음을 통해 공유


InitiateSystemShutdownA 함수(winreg.h)

지정된 컴퓨터의 종료 및 선택적 다시 시작을 시작합니다.

이벤트 로그에서 종료 이유를 기록하려면 InitiateSystemShutdownEx 함수를 호출합니다.

구문

BOOL InitiateSystemShutdownA(
  [in, optional] LPSTR lpMachineName,
  [in, optional] LPSTR lpMessage,
  [in]           DWORD dwTimeout,
  [in]           BOOL  bForceAppsClosed,
  [in]           BOOL  bRebootAfterShutdown
);

매개 변수

[in, optional] lpMachineName

종료할 컴퓨터의 네트워크 이름입니다. lpMachineNameNULL이거나 빈 문자열인 경우 함수는 로컬 컴퓨터를 종료합니다.

[in, optional] lpMessage

종료 대화 상자에 표시할 메시지입니다. 메시지가 필요하지 않은 경우 이 매개 변수는 NULL 일 수 있습니다.

Windows Server 2003 및 Windows XP: 이 문자열은 이벤트 로그 항목에 주석으로도 저장됩니다.

Windows Server 2003 및 Windows XP SP1: 문자열은 3072 TCHAR로 제한됩니다.

[in] dwTimeout

종료 대화 상자가 표시되어야 하는 시간(초)입니다. 이 대화 상자가 표시되는 동안 AbortSystemShutdown 함수에 의해 종료를 중지할 수 있습니다.

dwTimeout이 0이 아닌 경우 InitiateSystemShutdown은 지정된 컴퓨터에 대화 상자를 표시합니다. 대화 상자에는 함수를 호출한 사용자의 이름이 표시되고 , lpMessage 매개 변수로 지정된 메시지가 표시되고, 사용자에게 로그오프하라는 메시지가 표시됩니다. 대화 상자가 만들어지면 경고음이 울리고 시스템의 다른 창 위에 남아 있습니다. 대화 상자를 이동할 수 있지만 닫을 수는 없습니다. 타이머는 강제 종료되기 전에 남은 시간을 카운트다운합니다.

dwTimeout이 0이면 대화 상자를 표시하지 않고 컴퓨터가 종료되고 AbortSystemShutdown에서 종료를 중지할 수 없습니다.

Windows Server 2003 및 Windows XP SP1: 제한 시간 값은 MAX_SHUTDOWN_TIMEOUT 초로 제한됩니다.

Windows Server 2003 및 Windows XP SP1: 종료할 컴퓨터가 터미널 서비스 서버인 경우 시스템은 모든 로컬 및 원격 사용자에게 종료가 시작되었음을 경고하는 대화 상자를 표시합니다. 대화 상자에는 종료를 요청한 사람, 표시 메시지( lpMessage 참조) 및 서버가 종료될 때까지의 시간 등이 포함됩니다.

[in] bForceAppsClosed

이 매개 변수가 TRUE이면 저장되지 않은 변경 내용이 있는 애플리케이션을 강제로 닫아야 합니다. 이로 인해 데이터가 손실 될 수 있습니다.

이 매개 변수가 FALSE이면 시스템에서 사용자에게 애플리케이션을 닫도록 지시하는 대화 상자를 표시합니다.

[in] bRebootAfterShutdown

이 매개 변수가 TRUE이면 컴퓨터를 종료한 후 즉시 다시 시작합니다. 이 매개 변수가 FALSE이면 시스템은 모든 캐시를 디스크로 플러시하고 시스템을 안전하게 작동합니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

로컬 컴퓨터를 종료하려면 호출 스레드에 SE_SHUTDOWN_NAME 권한이 있어야 합니다. 원격 컴퓨터를 종료하려면 호출 스레드에 원격 컴퓨터에 대한 SE_REMOTE_SHUTDOWN_NAME 권한이 있어야 합니다. 기본적으로 사용자는 로그온한 컴퓨터에서 SE_SHUTDOWN_NAME 권한을 사용하도록 설정할 수 있으며 관리자는 원격 컴퓨터에서 SE_REMOTE_SHUTDOWN_NAME 권한을 사용하도록 설정할 수 있습니다. 자세한 내용은 특별 권한으로 실행을 참조하세요.

오류의 일반적인 원인으로는 잘못되었거나 액세스할 수 없는 컴퓨터 이름 또는 권한 부족이 있습니다. 지정된 컴퓨터에서 종료가 이미 진행 중인 경우 오류 ERROR_SHUTDOWN_IN_PROGRESS 반환됩니다. 빠른 사용자 전환을 사용하지만 로그온한 사용자가 없는 경우 오류 ERROR_NOT_READY 반환할 수 있습니다.

0이 아닌 반환 값이 로그오프가 성공했거나 성공한 것은 아닙니다. 종료는 비동기 프로세스이며 API 호출이 반환된 지 오래 지났거나 전혀 발생하지 않을 수 있습니다. 시간 제한 값이 0이더라도 애플리케이션, 서비스 또는 시스템에서 종료를 계속 중단할 수 있습니다. 0이 아닌 반환 값은 권한 및 매개 변수의 유효성 검사가 성공했으며 시스템이 종료 요청을 수락했음을 나타냅니다.

이 함수가 호출되면 호출자는 저장되지 않은 변경 내용이 있는 애플리케이션을 강제로 닫아야 하는지 여부를 지정해야 합니다. 호출자가 이러한 애플리케이션을 강제로 닫지 않도록 선택하고 저장되지 않은 변경 내용이 있는 애플리케이션이 콘솔 세션에서 실행되는 경우 콘솔 세션에 로그인한 사용자가 종료를 중단하거나, 변경 내용을 저장하거나, 애플리케이션을 닫거나, 강제로 애플리케이션을 닫을 때까지 종료가 계속 진행됩니다. 이 기간 동안 콘솔 사용자를 제외하고 종료가 중단되지 않을 수 있으며 다른 종료가 시작되지 않을 수 있습니다.

bForceAppsClosed 매개 변수 값을 TRUE로 설정하여 이 함수를 호출하면 이러한 상황이 발생하지 않습니다. 이렇게 하면 데이터가 손실 될 수 있습니다.

Windows Server 2003 및 Windows XP: 컴퓨터가 잠겨 있고 bForceAppsClosed 매개 변수가 FALSE이면 마지막 오류 코드가 ERROR_MACHINE_LOCKED. 시스템이 요청을 처리할 준비가 되지 않은 경우 마지막 오류 코드가 ERROR_NOT_READY. 애플리케이션은 잠시 기다렸다가 호출을 다시 시도해야 합니다. 예를 들어 시스템이 읽지 않은 상태로 종료를 시작하고 사용자가 시스템에 로그온하려고 할 때 종료 요청이 동시에 오는 경우 ERROR_NOT_READY 반환할 수 있습니다. 이 경우 애플리케이션은 잠시 기다렸다가 호출을 다시 시도해야 합니다.

예제

예를 들어 종료 대화 상자 표시를 참조하세요.

참고

winreg.h 헤더는 INITIATeSystemShutdown을 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 winreg.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

AbortSystemShutdown

InitiateSystemShutdownEx

종료

시스템 종료 함수