<Return[I]><Top>

InitiateSystemShutdownEx

Declare Function Api_InitiateSystemShutdownEx& Lib "advapi32" Alias "InitiateSystemShutdownExA" (ByVal lpMachineName$, ByVal lpMessage$, ByVal dwTimeout&, ByVal bForceAppsClosed&, ByVal bRebootAfterShutdown&, ByVal dwReason&)

Declare Function InitiateSystemShutdownEx Lib "advapi32" Alias "InitiateSystemShutdownExA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown As Long, ByVal dwReason As Long) As Long

指定したコンピュータのシャットダウンを開始する。コンピュータを再起動することもできる。

パラメータ
lpMachineName
    シャットダウンするコンピュータのネットワーク名を表す NULL で終わる文字列へのポインタを指定する。NULL または空の文字列を指定す

    ると、関数はローカルコンピュータをシャットダウンする。
lpMessage
    [シャットダウン]ダイアログボックスに表示するメッセージを表す NULL で終わる文字列へのポインタを指定する。メッセージを表示しない

    場合は、NULL を指定できる。
dwTimeout
    [シャットダウン]ダイアログボックスを表示する時間を秒単位で指定する。このダイアログボックスが表示されている間は、

    AbortSystemShutdown 関数を使ってシャットダウンを停止できる。
    このパラメータに 0 以外の値を指定すると、指定したコンピュータ上にダイアログボックスが表示される。ダイアログボックスには、関数を呼び

    出したユーザーの名前、lpMessage パラメータで指定したメッセージ、ユーザーにログオフを促すメッセージが表示される。ダイアログボックス

    が作成されるとビープ音が鳴り、他のウィンドウの一番手前に現れる。ダイアログボックスは移動できるが、閉じることはできない。強制的に

    シャットダウンするまでの残り時間がカウントされる。ユーザーがログオフすると、システムがただちにシャットダウンする。ユーザーがログオフし

    ない場合は、残り時間が 0 になるとシャットダウンする。
    dwTimeout パラメータに 0 を指定すると、ダイアログボックスを表示せずにシャットダウンが行われる。その場合、AbortSystemShutdown

    関数を使ってシャットダウンを停止することはできない。
bForceAppsClosed
    変更内容が保存されていないアプリケーションを強制的に閉じるかどうか指定する。TRUE を指定すると、そのようなアプリケーションが閉じ

    る。FALSE を指定すると、ユーザーにアプリケーションを閉じるよう促すダイアログボックスが表示される。
bRebootAfterShutdown
    シャットダウン直後にコンピュータを再起動するかどうか指定する。TRUE を指定すると、コンピュータが再起動する。FALSE を指定する

    と、システムがすべてのキャッシュの内容をディスクにセーブし、画面を消去して電源を切っても安全であることを示すメッセージを表示する。
dwReason
    シャットダウンを開始する理由を指定する。この理由は、イベント番号 6006 でイベントログに記録される。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。

解説
    ローカルコンピュータをシャットダウンする場合は、呼び出し側プロセスに SE_SHUTDOWN_NAME 権が必要である。リモートコンピュータを

    シャットダウンする場合は、そのコンピュータ上の呼び出し側プロセスに SE_REMOTE_SHUTDOWN_NAME 権が必要である。既定値で

    は、ユーザーはログオンしたコンピュータの SE_REMOTE_SHUTDOWN_NAME 権を有効にでき、管理者はリモートコンピュータ上の

    SE_REMOTE_SHUTDOWN_NAME 権を有効にできる。
    この関数が失敗するのは、多くの場合、コンピュータ名が無効またはアクセス不可能だったり、権限が不十分であることが原因である。指

    定したコンピュータのシャットダウンがすでに始まっている場合は、ERROR_SHUTDOWN_IN_PROGRESS エラーが返る。