InitiateShutdownW 関数 (winreg.h)
指定したコンピューターのシャットダウンと再起動を開始し、再起動のために登録されているアプリケーションをすべて再起動します。
構文
DWORD InitiateShutdownW(
[in, optional] LPWSTR lpMachineName,
[in, optional] LPWSTR 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
シャットダウンのオプションを指定する 1 つ以上のビット フラグ。 次の値が定義されています。
値 | 意味 |
---|---|
|
すべてのセッションは強制的にログオフされます。 このフラグが設定されておらず、現在のユーザー以外のユーザーが lpMachineName パラメーターで指定されたコンピューターにログオンしている場合、この関数は戻り値 ERROR_SHUTDOWN_USERS_LOGGED_ONで失敗します。 |
|
元のセッションが強制的にログオフされることを指定します。 このフラグが設定されていない場合、元のセッションは対話形式でシャットダウンされるため、関数が正常に戻ってもシャットダウンは保証されません。 |
|
猶予期間をオーバーライドして、コンピューターがすぐにシャットダウンされるようにします。 |
|
Windows 8で実行されている InitiateShutdown 以降では、シャットダウンのオプションを指定するには、この表に 1 つ以上のフラグを含むSHUTDOWN_HYBRID フラグを含める必要があります。
Windows 8以降、SHUTDOWN_HYBRID フラグがない場合、InitiateShutdown は常にシステムの完全シャットダウンを開始します。 |
|
コンピューターは、シャットダウンを開始する前に更新プログラムをインストールします。 |
|
コンピューターはシャットダウンされていますが、電源が切れているか再起動されていません。 |
|
コンピューターがシャットダウンされ、電源が切れている。 |
|
コンピューターがシャットダウンされ、再起動されます。 |
|
システムは、 exitWindowsEx 関数とEWX_RESTARTAPPS フラグを使用して再起動されます。 これにより、 RegisterApplicationRestart 関数を使用して再起動のために登録されているアプリケーションが再起動されます。 |
[in] dwReason
シャットダウンを開始する理由。 このパラメーターは、 システムシャットダウン理由コードの 1 つである必要があります。 このパラメーターが 0 の場合、既定値は未定義のシャットダウンであり、"この理由でタイトルが見つかりませんでした" としてログに記録されます。 既定として、計画外のシャットダウンもあります。 システムの構成方法に応じて、計画外のシャットダウンによって、システム状態情報を含むファイルの作成がトリガーされ、シャットダウンが遅れる可能性があります。 したがって、このパラメーターには 0 を使用しないでください。
戻り値
関数が成功すると、 ERROR_SUCCESSが返されます。
関数が失敗した場合は、次のいずれかのエラー コードが返されます。
リターン コード | 説明 |
---|---|
|
呼び出し元には、この操作を実行するために必要な特権 (SE_SHUTDOWN_PRIVILEGEまたはSE_REMOTE_SHUTDOWN_PRIVILEGE) がありません。 |
|
指定したコンピューターが存在しないか、アクセスできません。 |
|
指定したコンピューター名が有効なコンピューター名ではありません。 |
|
指定されたコンピューターは、シャットダウン インターフェイスをサポートしていません。 |
|
無効なパラメーターのセットが渡されました。 これには、次の組み合わせが含まれます。
|
|
指定したコンピューターでシャットダウンが既に開始されています。 |
|
指定したコンピューターのシャットダウンはスケジュールされていますが、開始されていません。 この関数を成功させるには、 SHUTDOWN_GRACE_OVERRIDE フラグを設定する必要があります。 |
|
現在のユーザー以外の 1 人以上のユーザーが指定したコンピューターにログオンしており、 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 以外の戻り値は、権限とパラメーターの検証が成功し、システムがシャットダウン要求を受け入れたことを示します。
注意
winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして InitiateShutdown を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |