Как предотвратить автоматическую блокировку устройства XP с помощью VBscript

машина блокируется во время автоматизации script, это связано с тем, что между различными сценариями существует длинный интервал (это необходимо по некоторым причинам). Я хочу избежать этой функции автоматической блокировки. Проблема в том, что в соответствии с политиками безопасности мы не можем отключить эту функцию с панели управления. Есть ли другой способ разблокировать систему?

Ответ 1

Я бы подумал, что вы можете остановить блокировку, посылая нажатие клавиши с регулярными интервалами, поэтому я бы предложил посмотреть WScript.SendKeys, Затем поставьте это в петлю со сном, чтобы заставить его отправлять его регулярно.

Просто будьте осторожны с тем, какой ключ вы отправляете, чтобы не влиять ни на что другое.

Ответ 2

Я сделал это... Он быстро отправляет 2 ключа SCROLLLOCK, поэтому он не вмешивается (ну, ни в коем случае не серьезно) с любыми приложениями. Он делает это каждые 60 секунд.... Приветствия!

set wsc = CreateObject("WScript.Shell")
Do
WScript.Sleep (60*1000)
wsc.SendKeys ("{SCROLLLOCK 2}")
Loop

Ответ 3

Я использую пару файлов...

Первый файл (Keep_Awake__start.vbs) сохраняет вещи разбуженными/разблокированными. Второй файл (Keep_Awake__end.vbs) удобно завершает процесс, когда вы хотите вернуться к нормальным процессам.

Первый файл...

' Keep_Awake__start.vbs
' Graham Edwards

' Typical stored in Start Menu 
'
' Use Keep_Awake__start.vbs to keep the computer from inactivity-based lockouts.
' Use Keep_Awake__end.vbs to remove Keep_Awake__start.vbs

' Largely pulled from st0le response
' Http://stackoverflow.com/questions/4457907/how-to-prevent-auto-locking-feature-of-an-xp-machine-using-vbscript

' --- Define Object
    set wsc = CreateObject("WScript.Shell")

' --- Loop every so many minutes and change the scroll lock setting 
    Do
        ' Wait for ~2 minutes
        WScript.Sleep (2*60*1000)
        wsc.SendKeys ("{SCROLLLOCK 2}")
    Loop

Второй файл...

' Keep_Awake__end.vbs
' Graham Edwards

' Use Keep_Awake__start.vbs to keep the computer from inactivity-based lockouts.
' Use Keep_Awake__end.vbs to remove Keep_Awake__start.vbs

' Largely pulled from Ansgar Wiechers response
' http://stackoverflow.com/questions/22324899/kill-a-vbscript-from-another-vbscript

' --- Define Object
    Set wmi = GetObject("winmgmts://./root/cimv2")

' --- Search and Destroy
    qry = "SELECT * FROM Win32_Process WHERE Name='wscript.exe' AND NOT " & _
    "CommandLine LIKE '%" & Replace(WScript.ScriptFullName, "\", "\\") & "%'"

    For Each p In wmi.ExecQuery(qry)
      p.Terminate
    Next

' --- Clean up
    Set wmi = Nothing ' Release the Application object

Файлы могут быть созданы из обычного текстового редактора и сохранены в любом месте (например, на вашем рабочем столе). После того как вы сохраните файл с расширением .vbs, он выполним. Таким образом, вам просто нужно дважды щелкнуть значок файла, чтобы начать или завершить работу (в зависимости от того, какой файл вы дважды щелкните).

Вы можете сохранить Keep_Awake__start.vbs в папке Windows Startup, поэтому он запускается, как только вы входите в систему.

Ответ 4

Самое простое решение, которое работает, - открыть mp3 или видеофайл и непрерывно воспроизводить его в Windows Media Player (используйте функцию повтора и отключите звук в проигрывателе). Таким образом, заставка никогда не появляется или система никогда не блокируется.

Ответ 5

Если это при запуске вашего пакета автоматизации, то используйте свой набор автоматизации, чтобы делать тактику мыши так часто. То, что я нахожу, работает хорошо, если у вас есть собственный пользовательский режим сна, и как часть вашей функции сна вы дергаете мышь. Используйте это для вашего длинного интервала между сценариями.

Ответ 6

Используйте следующий код VB script, чтобы разблокировать устройство:

Set objShell = CreateObject("WScript.Shell")
objShell.RegWrite "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop\ScreenSaverIsSecure", "0" , "REG_SZ"
Wscript.Echo "Your machine remains unlocked"

Ура!!

Ответ 7

Я пробовал сценарии оболочки и планировал моделирование движений мыши с помощью задачи Scheduler - но вот то, что я нашел, было ЛУЧШИМ из партии. +1 за его простоту. Он автоматически перемещает мышь на сдвинутый пиксель, поэтому экран не автоблокируется (хотя у вас есть опции для его настройки, если это необходимо)

Ссылка: Auto Mouse Mover - http://www.murgee.com/auto-mouse-mover/

Ответ 8

Set wshShell =wscript.CreateObject("WScript.Shell")
do
  wscript.sleep 55000
  wshshell.sendkeys "{SCROLLLOCK}"
loop

Мы можем использовать этот код, чтобы предотвратить разблокировку окна.

Ответ 9

Я сделал это таким образом

(внешний цикл = объявленная переменная)

'For 64 bit Excel.
Private Declare PtrSafe Function SetCursorPos Lib "user32" _
                        (ByVal x As Long, _
                        ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'For 32 bit Excel.
Private Declare Function SetCursorPos Lib "user32" _
                        (ByVal x As Long, _
                        ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long


 ' default variable
 private mousecounter as integer

(внутри процедуры)

Dim llCoord As POINTAPI
Dim activeXMousePos As Integer
Dim activeYMousePos As Integer

GetCursorPos llCoord
activeXMousePos = llCoord.Xcoord
activeYMousePos = llCoord.Ycoord

(внутри цикла):

        If mousecounter <= 2 Then
            SetCursorPos activeXMousePos - 1, activeYMousePos - 1
            mousecounter = mousecounter + 1
        End If

        If mousecounter > 2 Then
            SetCursorPos activeXMousePos + 2, activeYMousePos + 2
            mousecounter = 0
        End If

Итак - в основном этот код перемещает мышь 1 px leftup и 1 px rightdown lor каждый интервал цикла. Вы можете объявить любые другие значения, но я обнаружил, что это движение мыши не беспокоит пользователей.

Ответ 10

если кому-то нужны декларации с условиями

#If vba7 and win64 then

'For 64 bit Excel.
Private Declare PtrSafe Function SetCursorPos Lib "user32"  (ByVal x As Long,  ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long


#Else

'For 32 bit Excel.
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long,  ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

#End If