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
종료에 대한 옵션을 지정하는 하나 이상의 비트 플래그입니다. 다음 값이 정의됩니다.
값 | 의미 |
---|---|
|
모든 세션은 강제로 로그오프됩니다. 이 플래그가 설정되지 않고 현재 사용자 이외의 사용자가 lpMachineName 매개 변수로 지정된 컴퓨터에 로그온하는 경우 이 함수는 반환 값이 ERROR_SHUTDOWN_USERS_LOGGED_ON 실패합니다. |
|
원래 세션이 강제로 로그오프되도록 지정합니다. 이 플래그를 설정하지 않으면 원래 세션이 대화형으로 종료되므로 함수가 성공적으로 반환되더라도 종료가 보장되지 않습니다. |
|
유예 기간을 재정의하여 컴퓨터가 즉시 종료되도록 합니다. |
|
Windows 8 실행 중인 InitiateShutdown부터 종료 옵션을 지정하려면 이 테이블에 하나 이상의 플래그가 있는 SHUTDOWN_HYBRID 플래그를 포함해야 합니다.
Windows 8 시작에서는 SHUTDOWN_HYBRID 플래그가 없는 경우 InitiateShutdown에서 항상 전체 시스템 종료를 시작합니다. |
|
컴퓨터는 종료를 시작하기 전에 업데이트를 설치합니다. |
|
컴퓨터가 종료되었지만 전원이 꺼지거나 다시 부팅되지 않았습니다. |
|
컴퓨터가 종료되고 전원이 꺼집니다. |
|
컴퓨터가 종료되고 다시 부팅됩니다. |
|
시스템은 EWX_RESTARTAPPS 플래그와 함께 ExitWindowsEx 함수를 사용하여 다시 부팅됩니다. 그러면 RegisterApplicationRestart 함수를 사용하여 다시 시작하기 위해 등록된 모든 애플리케이션이 다시 시작됩니다. |
[in] dwReason
종료를 시작하는 이유입니다. 이 매개 변수는 시스템 종료 이유 코드 중 하나여야 합니다. 이 매개 변수가 0이면 기본값은 "이러한 이유로 제목을 찾을 수 없음"으로 기록되는 정의되지 않은 종료입니다. 기본적으로 계획되지 않은 종료이기도 합니다. 시스템 구성 방법에 따라 계획되지 않은 종료는 시스템 상태 정보를 포함하는 파일 생성을 트리거하여 종료를 지연할 수 있습니다. 따라서 이 매개 변수에는 0을 사용하지 마세요.
반환 값
함수가 성공하면 ERROR_SUCCESS 반환합니다.
함수가 실패하면 다음 오류 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
호출자에게 이 작업을 수행하는 데 필요한 권한(SE_SHUTDOWN_PRIVILEGE 또는 SE_REMOTE_SHUTDOWN_PRIVILEGE)이 없습니다. |
|
지정된 컴퓨터가 없거나 액세스할 수 없습니다. |
|
지정된 컴퓨터 이름이 올바른 컴퓨터 이름이 아닙니다. |
|
지정된 컴퓨터는 종료 인터페이스를 지원하지 않습니다. |
|
잘못된 매개 변수 집합이 전달되었습니다. 여기에는 다음 조합이 포함됩니다.
|
|
지정된 컴퓨터에서 종료가 이미 시작되었습니다. |
|
지정된 컴퓨터에 대한 종료가 예약되었지만 시작되지 않았습니다. 이 함수가 성공하려면 SHUTDOWN_GRACE_OVERRIDE 플래그를 설정해야 합니다. |
|
현재 사용자 이외의 한 명 이상의 사용자가 지정된 컴퓨터에 로그온되고 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 |