Запустите script при запуске Windows без входа пользователя в систему

Это компьютер Windows 2003, который активируется каждое утро, но никто не вступает в систему до нескольких часов позже.

Я хочу использовать промежуток времени для запуска резервной копии script c:\script\backup.cmd

Как я могу запустить это без присмотра после появления машины?

Я попробовал 2 раздела реестра, но это привело к тому, что script запускался после входа пользователя в систему (что слишком поздно):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

В конце концов я использовал Windows TaskScheduler, у которого есть такой вариант, но мне было интересно, есть ли другая возможность?

Ответ 1

Краткий ответ: GPEDIT.MSC (запуск, запуск, GPEdit.msc)

Windows 2000 и выше [1] предлагают компьютер Сценарии запуска в редакторе политик:

  • Настройки компьютера Настройки Windows Скрипты (запуск/завершение работы)

Имеется эквивалентная область входа script (то есть после запуска компьютера, когда пользователь входит в систему) в бит конфигурации пользователя.

дольше:

GPEDIT.MSC - это консоль редактирования групповой политики и выполняется против локального хранилища групповой политики локального компьютера, когда она используется напрямую, поэтому она полезна для настройки параметров только для локального. При использовании Active Directory один и тот же интерфейс используется для редактирования объектов групповой политики (GPO), размещенных в лесах, поэтому одни и те же настройки доступны через связку машин.

Скрипты запуска компьютера запускаются в контексте компьютера, то есть LocalSystem, как вы заметили, поэтому они часто не могут получить доступ к сетевым дискам, для которых требуется определенное членство пользователя или группы, и т.д. Когда компьютеры получают доступ к сети, они обычно (с исключениями) используют свою учетную запись MACHINENAME $.

Запуск script - это быстрый и простой способ запуска процесса при загрузке машины.

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

Использование службы Win32 является альтернативным вариантом - вы можете использовать утилиту SRVANY из набора ресурсов для "service-ify" практически любого исполняемого файла. VS.Net 2002 и более поздние версии также позволяют напрямую создавать управляемые службы.

И Планировщик заданий становится намного более способным с Vista/2008, способным запускать скрипты при запуске, на холостом ходу и/или при создании журналов событий или выполнении некоторых других условий: он довольно круто! Запланированные задачи могут иметь преимущество, заключающееся в возможности указать учетную запись пользователя, под которой выполняется задача, если это важно для вас.

Caveat Scriptor: http://support.microsoft.com/kb/256320

Запустить сценарии запуска асинхронно: http://msdn.microsoft.com/en-us/library/ms811602.aspx

Планировщик задач Vista (что нового): http://technet.microsoft.com/en-us/appcompat/aa906020.aspx

[1] Windows XP, 2003, Vista/2008, Windows 7/2008R2, Windows 8/2012, Windows 8.1/2012R2, Windows 10/Windows Server 2016. Все. Но NT4 не сделал!

Ответ 2

Вы уже наметили хорошее решение:

Настроить запланированную задачу для запуска при запуске и разрешить выполнение задания, когда пользователь не вошел в систему.

Ответ 3

Вы можете запустить script при запуске системы с помощью групповой политики gpedit.msc

Ответ 4

То, как вы делаете это, кажется мне хорошим; однако, если вам нужен альтернативный подход, службы начинают запускаться, когда машина загружается, чтобы вы могли написать службу, которая обнаруживает, что это новый день (чтобы разрешить перезагрузку), и если он затем выполнит вашу резервную копию.

Если I выполнял это как сервис, я бы использовал TCL, потому что я знаю его и как он, и у него есть расширение twapi, который позволяет запускать script как услугу. Другие языки сценариев могут иметь аналогичные возможности.

Ответ 5

Существует, если вы используете Active Directory. Если вы можете изолировать компьютер от своего собственного подразделения или использовать фильтрацию WMI, вы можете назначить объект групповой политики, который имеет запуск script для компьютера. Это обеспечило бы, что даже если кто-то отправился через безопасный режим и отключил планировщик заданий, при запуске и подключении к домену будет выполняться script.