VBScript編寫Windows防止鎖屏指令碼程式詳解

大雄45發表於2022-11-27
導讀 這篇文章主要為大家介紹了VBScript編寫Windows防止鎖屏 程式示例,有需要的朋友可以借鑑參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
背景介紹

有些公司出於安全和保密工作考慮,會透過 Windows 組策略強制所有辦公電腦在無操作的情況下 5 分鐘或者 10 分鐘自動鎖屏,避免無關人士看到不該看的內容。作為程式設計師,十分反感這種一刀切的方案,一來很容易打斷思路,比如正在寫程式碼或者向別人展示時,突然鎖屏了就挺噁心的;二來每次鎖屏後都要輸入密碼,這簡直就是浪費生命,不能忍!

為了解決這個問題,我們可以編寫一個簡單的 vbs  ,在鎖屏週期內模擬按鍵操作,從而避免 Windows 桌面被鎖屏。之所以使用 vbs 指令碼,而不是 Python、JavaScript 等更流行的高階語言,主要是因為這個程式的需求特別簡單,而且 vbs 指令碼可以在 Windows 系統中直接執行,不需要安裝任何依賴。

指令碼程式

下面給出兩個指令碼,你可以將它們命名為 never_lock.vbs 檔案(先在 Windows 系統新建一個 txt 文字檔案,貼上程式碼,然後修改檔名)。

複雜版本
Set ws=Wscript.CreateObject("Wscript.Shell")
If ws.expandenvironmentstrings("%strikkeyflag%")=("on")Then
    wscript.echo("Screen Never Lockout")
    ws.Environment("user").Item("strikkeyflag")="off"
    set mi=getobject("winmgmts:win32_process").instances_
    for each p in mi
        if ucase(p.name)=ucase("wscript.exe")then
            p.terminate
        End If
    Next
    wscript.quit
Else
    wscript.echo("Screen Never Lockout")
    ws.Environment("user").Item("strikkeyflag")="on"
    do
        set WshShell = CreateObject("WScript.Shell")
        WshShell.SendKeys"{ScrollLock}"
        wscript.sleep(280000) 'ms
    Loop
end if
簡單版本
'先定義一個Shell物件
Set WshShell = WScript.CreateObject("WScript.Shell")
 
'設定成正需要接續的時間
do
'設定成比屏保時間短點就可以
    WScript.Sleep 60000 '1min 60000ms
    WshShell.SendKeys "{ScrollLock}"
loop

在 Windows 系統中雙擊 never_lock.vbs 指令碼,即可執行。

如需停止指令碼,可以按 Ctrl + Shift + Esc 鍵開啟工作管理員,找到 Microsoft ® Windows Based Script Host,結束任務即可。

工作原理

你應該已經猜到,never_lock.vbs 指令碼的工作原理就是透過定時按一次 Scroll Lock 鍵,讓系統認為一直有人為操作,只要定時時間在鎖屏週期以內,就可以達到避免鎖屏的效果。

Scroll Lock 即“滾動鎖定鍵”,是一個現存於大部分鍵盤上的按鍵,通常附有一個指示按鍵開關情況的燈號。這個按鍵曾經用來鎖定所有軟體的滾動功能,但已不為現今大部分軟體所使用。因為這個按鍵已經不常用,所以部分鍵盤(例如筆記本)已經移除了這個鍵。不過系統還是保留了 Scroll Lock 按鍵的定義,因此我們可以藉助這個沒什麼用的按鍵完成防止鎖屏的功能,不會對系統造成任何影響。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2899784/,如需轉載,請註明出處,否則將追究法律責任。

相關文章