Windows自動シャットダウン

フリーソフトの力を借りてやっと成功。Vectorの定番ソフトから見つけた。Transmigrate 2 Ver.1.05(風がつくりしもの)


D:\Trans2_105\Trans2.exe /P /F
"/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で試しました。