タスクにshutdown.exeコマンドを設定したところ、ログインの有無にかかわらず落ちてしまうので、アウトです。
*無償の範囲であれば手段(スクリプト(VBS,bat,etc)、フリーソフト等)は問いません。
シャットダウンの動作検証はしていませんが、ログオンかどうかの判定は下記のようでできました。
(ログオン中はexplorer.exe が起動していることを判断材料にしています。)
If processCheck("explorer.exe") = True Then WScript.Echo "只今ログオン中なので、シャットダウンを実行しません。" Else ' CreateObject("WScript.Shell").Run "shutdown.exe -s", 0, True End If '//------------------------------------------------ ' プロセスが動いているかチェックする関数 '//------------------------------------------------ Function processCheck( pName ) '//------------------------------------------------ processCheck = False Dim objPWMI On Error Resume Next Set objPWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2") Err.Clear On Error GoTo 0 If Err.Number <> 0 Then Exit Function '接続できなかったら、終了 Dim colProc Set colProc = objPWMI.ExecQuery("Select * from Win32_Process WHERE Name='" & pName & "'") If colProc.Count > 0 Then processCheck = True End Function
シャットダウン部分はコメントアウトしていますので、適宜変更ください。
ありがとうございます。
本日試してみてうまくいきました!
win2Kの場合shutdown.exe(system32に無い)でちょっとはまりましたが、なんとかなりそうです。
ありがとうございました!