7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBScriptを使ってWindowsの画面ロックが掛からないようにする方法

Last updated at Posted at 2019-01-30

概要

Windowsの画面ロックの設定を変えられない場合に、フリーソフトなどをインストールすることなくWidowsの標準機能であるVBScriptを使用して画面ロックが掛からないようにする方法を紹介します。

原理はいたって簡単で、Windowsの画面ロックは無操作の状態で一定時間が経過するとロックが掛かるしくみなので、定期的にVBScriptによりキー操作を行うことで画面ロックが掛からないようにするというものです。

本来掛かるはずの画面ロックが掛からないようにする処理であるため、各社で運用されているセキュリティポリシーに違反する恐れがあります。
本ドキュメントに記載のVBScriptを実行したことにより生じたいかなる損害も責任を負いかねます。実行に際しては、これらリスクを理解の上自己責任で実施ください。

準備

以下のテキストの内容を「画面ロック制御.vbs」というファイル名で保存します。

画面ロック制御.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」の値を変更します。単位はミリ秒です。

実行

画面ロックが掛からないようにする

  1. 画面ロックが有効となっている状態で「画面ロック制御.vbs」をダブルクリックします。

  2. 以下メッセージが表示されますので「はい」をクリックします。
    画面ロック無効化.png

画面ロックが掛かるように戻す

  1. 画面ロックが無効となっている状態で「画面ロック制御.vbs」をダブルクリックします。

  2. 以下メッセージが表示されますので「はい」をクリックします。
    画面ロック有効化.png

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?