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

StackOverflow https://stackoverflow.com/questions/614766

Вопрос

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

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

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

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

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

Это было полезно?

Решение

Короткий ответ: ГПЕДИТ.MSC (Пуск, Выполнить, GPEdit.msc)

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

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

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

дольше:

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

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

А сценарий запуска это быстрый и простой способ запустить процесс при загрузке компьютера.

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

Альтернативным вариантом является использование службы Win32. Вы можете использовать СРВАНИ утилита из Resource Kit для «обслуживания» практически любого исполняемого файла.VS.Net 2002 и более поздние версии также позволяют напрямую создавать управляемую службу.

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

Предостережение Скриптор: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 этого не сделал!

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top