ログオン&ロック時のコマンド実行(改良版)

前回、ログオン&ロック解除時に処理を自動実行する方法をブログ化しました。

この方法にはWindows Updateによる自動再起動時にも処理が実行されてしまったり、その後のログイン時に(OSやブラウザーが余計な気を利かせて復元してしまい)ロック時の処理を再実行してしまうという問題がありました。

この解決策をいろいろと考えてみましたが、単純にタイマーを付加することでほとんど解決することに気づきました。

Windows Updateによる再起動時には処理は中断されるので、タイマーで待っていれば実行されません。ロック時には当然、タイマー後に処理が実行されます。ログイン・ロック解除時にもタイマーで待つので、問題があれば手動でキャンセルできます。

もう一つのノウハウとして、特定のファイルを用意することで実行をキャンセルする方法もあります。これをクラウドで同期しているフォルダーに設置・指定すれば、リモートから動作をキャンセルすることが可能です。

リモートログイン時にも処理が起動してしまう問題も、上の2つの方法でおおよそ防げます。

これらのノウハウを総合して、現時点で私が重用しているvbsファイルの例(一部抜粋)を下に示します。この例では特定のURLをChromeで開く処理を想定しています。また、15秒あれば、PCが再起動して処理が中断されるというように想定しています。

Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FileObj = CreateObject("Scripting.FileSystemObject")

If FileObj.FileExists("c:\Users\?????特定のパス名?????") Then
    WScript.Echo "スキップします。"

Else
	BtnCode = WshShell.Popup("???を実行しますか?", 30, "???", 4 + 32)

	Select Case BtnCode
		case 6 ' Yes
			WshShell.Run "chrome.exe  https://?????URL?????", 5, TRUE
			' Wscript.Sleep 15000
			' WshShell.SendKeys "%{F4}"
			' WScript.Echo "???を実施後、ブラウザーを閉じました。"
			
		case 7 ' No
			WScript.Echo "???をキャンセルしました。"
			
		case -1 ' Timeoutも実行
			WshShell.Run "chrome.exe  https://?????URL?????", 5, TRUE
			' Wscript.Sleep 15000
			' WshShell.SendKeys "%{F4}"
			' WScript.Echo "???を実施後、ブラウザーを閉じました。"
			
	End Select

End If

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です