다음을 통해 공유


InitiateShutdownA 함수(winreg.h)

지정된 컴퓨터의 종료 및 다시 시작을 시작하고 다시 시작에 등록된 모든 애플리케이션을 다시 시작합니다.

구문

DWORD InitiateShutdownA(
  [in, optional] LPSTR lpMachineName,
  [in, optional] LPSTR lpMessage,
  [in]           DWORD dwGracePeriod,
  [in]           DWORD dwShutdownFlags,
  [in]           DWORD dwReason
);

매개 변수

[in, optional] lpMachineName

종료할 컴퓨터의 이름입니다. 이 매개 변수의 값이 NULL이면 로컬 컴퓨터가 종료됩니다.

[in, optional] lpMessage

대화형 종료 대화 상자에 표시할 메시지입니다.

[in] dwGracePeriod

컴퓨터를 종료하기 전에 대기할 시간(초)입니다. 이 매개 변수의 값이 0이면 컴퓨터가 즉시 종료됩니다. 이 값은 MAX_SHUTDOWN_TIMEOUT 제한됩니다.

이 매개 변수의 값이 0보다 크고 dwShutdownFlags 매개 변수가 플래그 SHUTDOWN_GRACE_OVERRIDE 지정하면 함수가 실패하고 ERROR_BAD_ARGUMENTS 오류 코드가 반환됩니다.

[in] dwShutdownFlags

종료에 대한 옵션을 지정하는 하나 이상의 비트 플래그입니다. 다음 값이 정의됩니다.

의미
SHUTDOWN_FORCE_OTHERS
0x00000001(0x1)
모든 세션은 강제로 로그오프됩니다. 이 플래그가 설정되지 않고 현재 사용자 이외의 사용자가 lpMachineName 매개 변수로 지정된 컴퓨터에 로그온하는 경우 이 함수는 반환 값이 ERROR_SHUTDOWN_USERS_LOGGED_ON 실패합니다.
SHUTDOWN_FORCE_SELF
0x00000002(0x2)
원래 세션이 강제로 로그오프되도록 지정합니다. 이 플래그를 설정하지 않으면 원래 세션이 대화형으로 종료되므로 함수가 성공적으로 반환되더라도 종료가 보장되지 않습니다.
SHUTDOWN_GRACE_OVERRIDE
0x00000020(0x20)
유예 기간을 재정의하여 컴퓨터가 즉시 종료되도록 합니다.
SHUTDOWN_HYBRID
0x00000200(0x200)
Windows 8 실행 중인 InitiateShutdown부터 종료 옵션을 지정하려면 이 테이블에 하나 이상의 플래그가 있는 SHUTDOWN_HYBRID 플래그를 포함해야 합니다.

Windows 8 시작에서는 SHUTDOWN_HYBRID 플래그가 없는 경우 InitiateShutdown에서 항상 전체 시스템 종료를 시작합니다.

SHUTDOWN_INSTALL_UPDATES
0x00000040(0x40)
컴퓨터는 종료를 시작하기 전에 업데이트를 설치합니다.
SHUTDOWN_NOREBOOT
0x00000010(0x10)
컴퓨터가 종료되었지만 전원이 꺼지거나 다시 부팅되지 않았습니다.
SHUTDOWN_POWEROFF
0x00000008(0x8)
컴퓨터가 종료되고 전원이 꺼집니다.
SHUTDOWN_RESTART
0x00000004(0x4)
컴퓨터가 종료되고 다시 부팅됩니다.
SHUTDOWN_RESTARTAPPS
0x00000080(0x80)
시스템은 EWX_RESTARTAPPS 플래그와 함께 ExitWindowsEx 함수를 사용하여 다시 부팅됩니다. 그러면 RegisterApplicationRestart 함수를 사용하여 다시 시작하기 위해 등록된 모든 애플리케이션이 다시 시작됩니다.

[in] dwReason

종료를 시작하는 이유입니다. 이 매개 변수는 시스템 종료 이유 코드 중 하나여야 합니다. 이 매개 변수가 0이면 기본값은 "이러한 이유로 제목을 찾을 수 없음"으로 기록되는 정의되지 않은 종료입니다. 기본적으로 계획되지 않은 종료이기도 합니다. 시스템 구성 방법에 따라 계획되지 않은 종료는 시스템 상태 정보를 포함하는 파일 생성을 트리거하여 종료를 지연할 수 있습니다. 따라서 이 매개 변수에는 0을 사용하지 마세요.

반환 값

함수가 성공하면 ERROR_SUCCESS 반환합니다.

함수가 실패하면 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
ERROR_ACCESS_DENIED
호출자에게 이 작업을 수행하는 데 필요한 권한(SE_SHUTDOWN_PRIVILEGE 또는 SE_REMOTE_SHUTDOWN_PRIVILEGE)이 없습니다.
ERROR_BAD_NETPATH
지정된 컴퓨터가 없거나 액세스할 수 없습니다.
ERROR_INVALID_COMPUTERNAME
지정된 컴퓨터 이름이 올바른 컴퓨터 이름이 아닙니다.
ERROR_INVALID_FUNCTION
지정된 컴퓨터는 종료 인터페이스를 지원하지 않습니다.
ERROR_INVALID_PARAMETER
잘못된 매개 변수 집합이 전달되었습니다. 여기에는 다음 조합이 포함됩니다.
  • lpMachineName 매개 변수는 원격 컴퓨터를 지정하고 dwShutdownFlags 매개 변수는 SHUTDOWN_FORCE_SELF 지정하지 않습니다.
  • dwGracePeriod의 값이 0보다 크고 dwShutdownFlags 매개 변수가 SHUTDOWN_FORCE_SELF 지정하지 않습니다.
  • dwGracePeriod 값이 0보다 크고 dwShutdownFlags 매개 변수가 SHUTDOWN_GRACE_OVERRIDE 지정합니다.
ERROR_SHUTDOWN_IN_PROGRESS
지정된 컴퓨터에서 종료가 이미 시작되었습니다.
ERROR_SHUTDOWN_IS_SCHEDULED
지정된 컴퓨터에 대한 종료가 예약되었지만 시작되지 않았습니다. 이 함수가 성공하려면 SHUTDOWN_GRACE_OVERRIDE 플래그를 설정해야 합니다.
ERROR_SHUTDOWN_USERS_LOGGED_ON
현재 사용자 이외의 한 명 이상의 사용자가 지정된 컴퓨터에 로그온되고 SHUTDOWN_FORCE_OTHERS 플래그가 설정되지 않았습니다.

설명

로컬 컴퓨터를 종료하려면 호출 스레드에 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이 아닌 반환 값은 권한 및 매개 변수의 유효성 검사가 성공했으며 시스템이 종료 요청을 수락했음을 나타냅니다.

참고

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

요구 사항

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

추가 정보

종료