Я создал сценарий, который хочу развернуть на своих рабочих станциях XP в качестве сценария выключения. Я знаю, что могу добавить свой сценарий в качестве сценария выключения с пользовательским интерфейсом (gpedit.msc), но я хочу автоматизировать развертывание моего сценария. Мои рабочие станции не являются частью домена Windows. Я буду развертывать с OCS Inventory.
Я пытался добавить записи в реестр Windows, но это не сработало. Я не вижу, что я добавил при запуске gpedit.msc. Если я добавлю что-то с помощью gpedit.msc, похоже, это перезапишет то, что я добавил вручную в реестр.
Всем, кто пытается заставить это работать, мои соболезнования. Я потратил много часов, пытаясь выяснить, какие именно из сотен изменений, вносимых gpedit, действительно важны. Мои тесты проводились на Windows Server 2016. Они оказались актуальными:
Значения под:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
Справочники:
\Windows\system32\GroupPolicy\Machine\Scripts\Startup
\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown
Windows использует эти каталоги в качестве рабочего каталога для сценариев. Даже если вы не храните там свои сценарии запуска / завершения работы, эти каталоги должны существовать.
Больше ничего gpedit не имеет значения. Это включает в себя множество записей реестра и файлы .ini, на которые есть ссылки в других ответах. Возможно, некоторые из вышеперечисленных клавиш тоже лишние, но у меня закончилось терпение к тестированию.
У меня все заработало.
Я добавил скрипт с gpedit.msc на один компьютер. Я экспортировал ключи реестра из HKLM\Software\Policies\Microsoft\Windows\System\Scripts
и HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine
. Я также застегнул C:\WINDOWS\SYSTEM32\GroupPolicy
каталог.
На другом компьютере я пропатчил реестр двумя своими .reg-файлами, которые экспортировал ранее на свой первый компьютер. Я также разархивировал свой zip-файл в то же место на втором ПК.
Скрипт запускается при завершении работы, и я вижу его в gpedit.msc. Вроде бы все хорошо!
Представим, что наш сценарий запуска находится в C: \ MyStartupScript.bat.
Вам нужна запись реестра REG_SZ с именем Сценарий со значением, установленным на C: \ MyStartupScript.bat расположены в обоих из следующих двух мест:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts \ Startup \ 0 \ 0
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ System \ Scripts \ Startup \ 0 \ 0
Вам также понадобится следующая запись в C: \ WINDOWS \ system32 \ GroupPolicy \ Machine \ Scripts \ Scripts.ini
[Startup]
0CmdLine=C:\MyStartupScript.bat
0Parameters=
Для сценария выключения следуйте тем же инструкциям, но замените все вхождения слова Запускать со словом Неисправность
редактировать:
Похоже, вам может потребоваться создать еще две записи в реестре, если они еще не существуют.
Вам нужно будет создать их в обоих упомянутых выше местах реестра.
Первая запись - это запись REG_SZ, называемая Параметры и его значение можно оставить пустым.
Вторая запись - это запись REG_QWORD с именем ExecTime и его значение установлено на 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
В Windows XP команда REG не может добавить запись REG_QWORD в реестр.
Чтобы обойти это ограничение, я, например, использую командный файл, который добавляет эти строки
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0]
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
в файл с именем addQword.reg затем выполняет файл, используя эту команду:
regedit /s addQword.reg
Небольшое обновление для ответа Фрэнсиса.
Для Windows Server 2016 HKLM\Software\Policies\Microsoft\Windows\System\Scripts
был перемещен в HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts
Итак, я получил его, экспортировав следующие ключи реестра:
HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ Scripts HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine
и как Фрэнсис предложил скопировать
C: \ WINDOWS \ SYSTEM32 \ GroupPolicy
Вы можете добавить ключи здесь: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts \ Shutdown
Смотрите здесь для получения дополнительной информации: http://en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown
Вам просто нужно будет создать файл reg, который будет запускаться на всех ваших машинах, чтобы добавить ключ в реестр.
Я создал сценарий выключения, используя gpedit.msc на одном сервере, затем экспортировал ключ реестра и импортировал его на целевые серверы. Используйте следующий ключ:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts]
Вам также необходимо скопировать в целевой файл указанный ниже файл:
C: \ Windows \ system32 \ GroupPolicy \ Machine \ Scripts \ scripts.ini
Если это сценарий Powershell, скопируйте вместо него следующий файл:
C: \ Windows \ system32 \ GroupPolicy \ Machine \ Scripts \ psscripts.ini