Добавление сценария выхода - PullRequest
5 голосов
/ 19 сентября 2010

У меня есть несколько сценариев, которые я хотел бы запускать каждый раз, когда пользователь выходит из системы.Я хотел бы создать что-то, что программно настраивает сценарии выхода из системы.Например, exe-файл или cmd-файл, который можно выполнить, чтобы добавить сценарий выхода из системы в список сценариев выхода из системы, которые выполняет Windows.Из-за этого предпочтительнее использовать функцию Windows API или команду оболочки Windows, но я не могу найти таких функций или команд, которые могли бы помочь с этим.

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

Я пробовал подмножества изменений, которые вносит GPEdit, в надежде, что это все равно будет работать.Например, я экспортировал сделанные изменения в HKCU \ Software \ Policies \ Microsoft \ Windows \ System \ Scripts \ Logoff и импортировал их на другой ПК, но это не сработало, а MMC GPEdit не знал, что я даже сделализменить.

Как я уже сказал, набор функций Windows API или команды оболочки Windows предпочтительнее, если кто-то знает, что может помочь, но если кто-то знает способ декодировать кучу информации, которую использует GPEdit.делает так, чтобы я мог высмеять его, тогда я не против внесения изменений в реестр, если они стабильны.

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

К сожалению, для Google это трудная тема, так каку многих других вещей, которые люди пытаются сделать, есть те же самые ключевые слова, к которым я обращаюсь, но они не действуютдействительно та же тема.Например, завершение работы / выход из системы для запуска приложений или удаленный выход из системы пользователей.

Если кто-либо является мастером реестра Windows или MMC и считает, что при просмотре дампа реестра изменения, которые вносит консоль GPEdit при выполнениито же самое было бы полезно, тогда просто скажите об этом, и я сделаю это доступным, поскольку я уже сделал это.Я сомневаюсь, что это правильный путь, однако я начал изучать, как создавать инструменты оснастки MMC;я думаю, что, возможно, саму оснастку GPEdit можно реверсировать, чтобы я мог точно увидеть, что она делает.Однако это никуда не приведет, поскольку ни один из файлов .adm, которые я вижу, не имеет настроек для этого, а файл gpedit.msc, похоже, не содержит ничего, что могло бы выдать его в виде открытого текста, хотяэто раздел в нем, который выглядит как бред, так что, возможно, там происходит какая-то магия.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Планировщик задач может делать это начиная с Windows Vista. Для Windows XP и предыдущих версий, похоже, нет хорошего ответа. В XP нет перечисленного ниже триггера «При отключении от сеанса пользователя».

Существует две основные утилиты командной строки для планирования задач в Windows: at.exe и schtasks.exe. Сами по себе ни одна из них не предоставляет все опции, которые вы можете получить из интерфейса GUI (хотя schtasks подходит очень близко). Однако в планировщике заданий есть формат XML, описывающий запланированные задания, а у schtasks.exe есть возможность импортировать задания из файла XML.

Чтобы создать сценарий выхода из системы, создайте файл XML, описывающий задачу, которую вы хотите создать. Убедитесь, что вы используете триггер «При отключении от сеанса пользователя» и выберите выход из «любого пользователя» (который требует повышенных прав) и «подключение с локального компьютера». Установите все необходимые действия по выходу из системы (например, ваши сценарии выхода из системы) как действия по заданию.

У Microsoft есть список примеров для разработки задач для планировщика задач, включая примеры XML. Вы можете найти этот список здесь .

В качестве альтернативы, вы можете настроить свою задачу один раз, используя инструмент с графическим интерфейсом, затем вы можете щелкнуть правой кнопкой мыши задачу, где она появляется в списке задач, и выбрать «Экспорт». Вы получите диалоговое окно сохранения, которое позволит вам сохранить задачу в формате XML.

Затем я создаю сценарий настройки задачи с помощью следующей команды:

schtasks /create /tn "Task Name Here" /XML "path to xml file here" /ru domain\username /rp "password"

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

1 голос
/ 21 июня 2011

Не могли бы вы просто использовать планировщик задач Windows для запуска сценариев?

Более новые версии планировщика задач (например, Windows Server 2008, Windows Vista / 7) должны позволять вам запускать сценарии, которые запускаются при выходе пользователя из системы.

См. здесь

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...