Выполнить блокирующий скрипт с правами администратора в Windows до и после ожидания

321
divB

Я хотел бы запустить скрипт в Windows прямо перед режимом ожидания / ожидания с правами администратора и блокировкой, то есть система не должна переходить в спящий режим до тех пор, пока скрипт не будет успешно завершен.

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

Справочная информация. Похоже, у меня очень глючный драйвер для устройства, который оставляет Windows зависшей с пустым экраном при переходе в режим ожидания или отображает пустой экран при пробуждении. Это не воспроизводится на 100%, это случается только иногда. Однако, кажется, когда я просто отключаю соответствующее устройство в диспетчере устройств, все работает нормально. Я хотел бы автоматизировать этот процесс.

2

1 ответ на вопрос

2
DavidPostill

I would like to run a script in Windows right before standby/sleep mode

You can use the Task Scheduler to create a task that is triggered by a Kernel-Power log event that indicates "Sleep":

  1. Run "Task Scheduler".
  2. Select "Task Scheduler Library
  3. Click menu "Action" > "Create Task"
  4. Select "General" and give the task a "Name" and Description"
  5. Select "Triggers" and click "New"

    • Set "Begin the Task" to "On an Event"
    • Set "Log" to "System"
    • Set "Source" to "Kernel-Power"
    • Set "Event ID" to "42" (Sleep)
    • Click "Ok"

    enter image description here

  6. Select "Actions" and click "New"

    • Set "Program/script" to a script of your choice
    • Click "Ok"

    enter image description here


When I disable the corresponding device in the device manager everything works

I would like to automate this process.

Use devcon to disable the device.

Notes:

  • Use devcon find to get the device hardware ID.
  • Use devcon disable HardwareID to disable the device.
  • Add devcon disable HardwareID to the script created above.
  • On Windows 7 64 bit you need to use the 32 bit version of devcon, as the 64 bit version gives the following error:

    This version of F:\test\devcon\ia64\devcon.exe is not compatible with the version of Windows you're running. Check your computer's system information to see whether you need a x86 (32-bit) or x64 (64- bit) version of the program, and then contact the software publisher.

  • The download link mentioned below is a zip file containing both 32 and 64 bit versions of devcon.


Where do I download devcon?

Go to the http://support.microsoft.com page The DevCon command-line utility functions as an alternative to Device Manager for the download link.


Further Reading

Спасибо, отличный указатель, но это работает только для ** выключения **. Мне бы это понадобилось для ** режима ожидания ** и ** режима сна **. divB 8 лет назад 0
@divB Ответ обновлен, чтобы использовать планировщик заданий для запуска сценария в соответствующем событии Kernel-Power (EventID 42 - Sleep). DavidPostill 8 лет назад 1
@divb Примечание режим ожидания и режим - это одно и то же. См. [В чем разница между режимами сна и ожидания?] (Http://superuser.com/q/367842) DavidPostill 8 лет назад 0
Теперь это работает в режиме ожидания, и это здорово, но это ** не ** блокировка: для теста я просто позволю выполнить calc.exe. Когда я переключаюсь в режим ожидания, calc.exe потенциально появляется после того, как я возобновил работу! Так как глючный драйвер оставляет систему зависшей, когда он переходит в режим ожидания, мне нужно отключить его **, прежде чем ** он фактически перейдет в режим ожидания. divB 8 лет назад 0