Программно добавить скрипт входа / выхода в Windows

823
Aran-Fey

Есть ли способ программно добавить сценарий входа или выхода из Windows? Я не хочу использовать какие-либо графические программы, все должно происходить так, чтобы пользователь ничего не заметил.

Кроме того, я хочу запускать сценарии только тогда, когда определенный пользователь входит / выходит. Он не должен срабатывать для каждого пользователя в системе.

Попытки решения:

  1. Добавление команды в реестр, согласно этому ответу . Кажется, что добавления команды к HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts\Logoff\0\0недостаточно. Я обнаружил, что мне также нужно добавить ту же команду в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\S-1-5-21-57470242-2825662697-3518406308-1003\Scripts\Logoff\0\0и, возможно, также изменить %WINDIR%\System32\GroupPolicy\User\Scripts\scripts.ini, в противном случае команда просто не выполняется.

    Я перестал искать это решение, потому что не знаю, что это за раздел реестра S-1-5-21-57470242-2825662697-3518406308-1003. Это случайная последовательность цифр? Это всегда один и тот же текст? Будет ли это работать, если я использую это на другом ПК?

  2. Изменение %WINDIR%\System32\GroupPolicy\User\Scripts\scripts.iniсогласно этому ответу . Здесь происходит нечто очень странное. Я могу увидеть этот файл в проводнике. Это существует. Я могу открыть его и с правами администратора использовать блокнот для его изменения. Но когда я пытаюсь получить доступ к нему из скрипта Python, я получаю FileNotFoundError, даже если ему предоставлены права администратора. (Traceback: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Windows\\System32\\GroupPolicy\\User\\Scripts\\scripts.ini'PS: я не использую двойную обратную косую черту, Python просто отображает их так)

  3. Создание задачи запуска с использованием SCHTASKS. Я отказался от этого, потому что похоже, что SCHTASKS поддерживает только задачи входа в систему, но не задачи выхода из системы.

1
`schtasks` будет обрабатывать выход из системы. Свяжите задачу с идентификатором события 4647 - Выход пользователя из системы или 4634 - Учетная запись вышла из системы DavidPostill 7 лет назад 0
@DavidPostill Я создал задачу с помощью `SCHTASKS / create / tn test / tr" C: \ Python34 \ python.exe 'D: \ test.py' "/ ec SYSTEM / sc ONEVENT / mo" * [System / EventID = 4634] "`, но по какой-то причине он не выполняется, когда я выхожу из системы. Он работает успешно, если я делаю `SCHTASKS / run / tn test`. Что я делаю неправильно? Aran-Fey 7 лет назад 0
Без понятия. Это работает с 4647? Это может быть моментом времени - не можете запустить его, потому что пользователь уже вышел из системы? DavidPostill 7 лет назад 0
@DavidPostill Это тоже не работает, к сожалению. Я посмотрел на `schtasks / query / v / tn test / fo list` и все выглядит нормально, но я заметил, что" время последнего запуска "не меняется при выходе из системы. Я думаю, что-то не так с xpath `* [System / EventID = 4634]`. Aran-Fey 7 лет назад 0
Попробуйте создать задачу с графическим интерфейсом ... DavidPostill 7 лет назад 0
Соответствующий: [выход из планировщика задач Windows 7] (https://stackoverflow.com/a/34045164) и [Как запланировать запуск задачи при закрытии окон] (https://stackoverflow.com/a/27327480) DavidPostill 7 лет назад 0
@DavidPostill Создал задачу с графическим интерфейсом, с двумя триггерами: 1) при событии 4634 2) при отключении от сеанса пользователя, все еще не запускается ... Кроме того, изменение `HKEY_LOCAL_MACHINE` мне не помогает, потому что я хочу запускать сценарии только при входе или выходе определенного пользователя, но `HKEY_LOCAL_MACHINE` будет запускаться для всех пользователей, не так ли? Извините, если это не ясно из моего вопроса, я редактировал его сейчас. Aran-Fey 7 лет назад 0

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