InitiateSystemShutdownExA 関数 (winreg.h)
指定したコンピューターのシャットダウンとオプションの再起動を開始し、必要に応じてシャットダウンの理由を記録します。
構文
BOOL InitiateSystemShutdownExA(
[in, optional] LPSTR lpMachineName,
[in, optional] LPSTR lpMessage,
[in] DWORD dwTimeout,
[in] BOOL bForceAppsClosed,
[in] BOOL bRebootAfterShutdown,
[in] DWORD dwReason
);
パラメーター
[in, optional] lpMachineName
シャットダウンするコンピューターのネットワーク名。 lpMachineName が NULL または空の文字列の場合、関数はローカル コンピューターをシャットダウンします。
[in, optional] lpMessage
シャットダウン ダイアログ ボックスに表示されるメッセージ。 メッセージが必要ない場合、このパラメーターは NULL にすることができます。
Windows Server 2003 および Windows XP: この文字列は、イベント ログ エントリのコメントとしても格納されます。
Windows Server 2003 および Windows XP SP1: 文字列は 3072 TCHAR に制限されています。
[in] dwTimeout
シャットダウン ダイアログ ボックスを表示する時間 (秒単位)。 このダイアログ ボックスが表示されている間は、 AbortSystemShutdown 関数によってシャットダウンを停止できます。
dwTimeout が 0 でない場合、InitiateSystemShutdownEx は指定したコンピューターにダイアログ ボックスを表示します。 ダイアログ ボックスには、関数を呼び出したユーザーの名前が表示され、 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 の場合、システムはすべてのキャッシュをディスクにフラッシュし、システムを安全に電源を切ります。
[in] dwReason
シャットダウンを開始する理由。 このパラメーターは、 システムシャットダウン理由コードの 1 つである必要があります。
このパラメーターが 0 の場合、既定値は未定義のシャットダウンであり、"この理由でタイトルが見つかりませんでした" としてログに記録されます。 既定として、計画外のシャットダウンもあります。 システムの構成方法に応じて、計画外のシャットダウンによって、システム状態情報を含むファイルの作成がトリガーされ、シャットダウンが遅れる可能性があります。 したがって、このパラメーターには 0 を使用しないでください。
Windows XP: 計画外のシステムシャットダウン中は、システム状態情報は保存されません。 上記のテキストは適用されません。
戻り値
関数が成功すると、戻り値は 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 ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして InitiateSystemShutdownEx を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |