概要
Windowsの画面ロックの設定を変えられない場合に、フリーソフトなどをインストールすることなくWidowsの標準機能であるVBScriptを使用して画面ロックが掛からないようにする方法を紹介します。
原理はいたって簡単で、Windowsの画面ロックは無操作の状態で一定時間が経過するとロックが掛かるしくみなので、定期的にVBScriptによりキー操作を行うことで画面ロックが掛からないようにするというものです。
本来掛かるはずの画面ロックが掛からないようにする処理であるため、各社で運用されているセキュリティポリシーに違反する恐れがあります。
本ドキュメントに記載のVBScriptを実行したことにより生じたいかなる損害も責任を負いかねます。実行に際しては、これらリスクを理解の上自己責任で実施ください。
準備
以下のテキストの内容を「画面ロック制御.vbs」というファイル名で保存します。
' スリープ時間(デフォルト60秒)
intSleepTime = 60000
' 送信キー(デフォルト「F16」)
strSendKey = "{F16}"
' 起動チェック
strQuery = "Select * FROM Win32_Process WHERE (Caption = 'wscript.exe' OR Caption = 'cscript.exe') AND " _
& " CommandLine LIKE '%" & WScript.ScriptName & "%'"
Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set wmiService = wmiLocator.ConnectServer
Set objEnumerator = wmiService.ExecQuery(strQuery)
Dim iCnt
iCnt = 0
If objEnumerator.Count > 1 Then
'>> 実行中
strMsg = "現在、画面ロックは「無効」です。" & vbCrLf _
& "「有効」にし、ロックが掛かるようにしますか?"
If MsgBox(strMsg , vbYesNo + vbQuestion, "画面ロック有効化") = vbYes Then
For Each objProcess In objEnumerator
iCnt = iCnt + 1
If iCnt <> objEnumerator.Count then
'最後のプロセス(自分自身)以外を終了
objProcess.Terminate
End If
Next
End If
WScript.Quit 0
Else
'>> 新規
strMsg = "現在、画面ロックは「有効」です。" & vbCrLf _
& "「無効」にし、ロックが掛からないようにしますか?"
If MsgBox(strMsg , vbYesNo + vbQuestion, "画面ロック無効化") = vbYes Then
Call StopWindowsLock(strSendKey, intSleepTime)
End If
End If
WScript.Quit 0
'-------------------------------------------------------------------------------
' 画面ロック停止処理
'-------------------------------------------------------------------------------
Sub StopWindowsLock(key, sleepTime)
Set WshShell = CreateObject("Wscript.Shell")
Do
WshShell.SendKeys(key)
WScript.Sleep sleepTime
Loop
End Sub
60秒ごとに「F16」キーを押す処理を実行することで、画面ロックが掛からないようにしています。
通常のWindows用のキーボードには、F13~F16キーは存在しないので操作が割り当てられていることは無いと思いますが、もし使用しているアプリケーションがある場合はキーを変更します。
キーを変更するには、2行目の「strSendKey = "{F16}"」の値を変更します。
キーを押す間隔を変更するには4行目の「intSleepTime = 60000」の値を変更します。単位はミリ秒です。