Windows自動シャットダウン
フリーソフトの力を借りてやっと成功。Vectorの定番ソフトから見つけた。Transmigrate 2 Ver.1.05(風がつくりしもの)
"/F"を入れないとロック状態のときシャットダウンしてくれない。
D:\Trans2_105\Trans2.exe /P /F
今までやってたことは、WSH(WMI)でシャットダウンスクリプトを作成。それをタスクで自動実行。ロック(スクリーンセーバーのパスワード設定)がかかっていないときは、正常にシャットダウンしてくれる。ロック状態だとだめ。
そのスクリプト↓。たしかマイクロソフトのサンプルをもとに、"win32shutdown()"の引数を"8"に設定。
参考
'シャットダウン
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.win32shutdown(8)
Next
Win32Shutdown Method of the Win32_OperatingSystem Class
コンピュータの再起動サンプルスクリプト
とここまで書いて、"win32shutdown()"の引数に"Forced Power Off"の値があることにあらためて気づいた。
Value Meaning 8 + 4 Forced Power Off
ということで、"win32shutdown()"の引数を"12"に変更してテスト。結果、うまくいきました。文書にしてみると新たな発見がありますな。まぁ、よく見ろって感じですか。
追記:Win2kで試しました。