次の方法で共有


InitiateSystemShutdownExW 関数 (winreg.h)

指定したコンピューターのシャットダウンとオプションの再起動を開始し、必要に応じてシャットダウンの理由を記録します。

構文

BOOL InitiateSystemShutdownExW(
  [in, optional] LPWSTR lpMachineName,
  [in, optional] LPWSTR 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 ゼロの場合、コンピューターはダイアログ ボックスを表示せずにシャットダウンし、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

シャットダウンを開始する理由。 このパラメーターは、システムシャットダウン理由コードのいずれかである必要があります。

このパラメーターが 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を返すことができます。

ゼロ以外の戻り値は、ログオフが成功したか成功したことを意味するものではありません。 シャットダウンは非同期プロセスであり、API 呼び出しが返された後、またはまったく発生しない場合があります。 タイムアウト値がゼロの場合でも、シャットダウンはアプリケーション、サービス、さらにはシステムによって中止される可能性があります。 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 を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winreg.h (Windows.h を含む)
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

AbortSystemShutdown の

シャットダウン

システムシャットダウン機能