Автоматически запускать скрипт при входе в Windows

123429
Hallgrim

Как я могу автоматически запустить скрипт при входе в Windows?

Я хотел бы запускать что-то вроде этого всякий раз, когда я захожу в свой компьютер:

echo %USERNAME% logged on at %DATE% %TIME% >> log.txt 

Бонусом будет возможность запускать один и тот же скрипт всякий раз, когда я разблокирую экранную заставку.

25
Ответ очень высокооктановый - используя вашу однострочную версию, я предлагаю что-то более скромное (но эффективное) ниже ... ;-) Jeff 5 лет назад 0

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

22
Ivo Flipse

Если у вас уже есть скрипт:

Чтобы назначить сценарий входа пользователю или группе

  • Откройте Управление компьютером.
  • В дереве консоли щелкните Пользователи.

Куда? Системные инструменты / Локальные пользователи и группы / Пользователи

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

Еще вот удобное "HowTo" от Microsoft

Создание сценариев входа

Вы можете использовать сценарии входа в систему, чтобы назначать задачи, которые будут выполняться, когда пользователь входит в систему на определенном компьютере. Сценарии могут выполнять команды операционной системы, устанавливать системные переменные среды и вызывать другие сценарии или исполняемые программы. Семейство Windows Server 2003 поддерживает две среды сценариев: командный процессор запускает файлы, содержащие команды пакетного языка, а Windows Script Host (WSH) запускает файлы, содержащие команды Microsoft Visual Basic Scripting Edition (VBScript) или Jscript. Вы можете использовать текстовый редактор для создания сценариев входа. Некоторые задачи, обычно выполняемые сценариями входа в систему:

  • Сопоставление сетевых дисков.
  • Установка и настройка принтера по умолчанию для пользователя.
  • Сбор информации о компьютерной системе.
  • Обновление вирусных сигнатур.
  • Обновление программного обеспечения.
  • В следующем примере сценарий входа в систему содержит команды VBScript, которые используют Active Directory
  • Сервисные интерфейсы (ADSI) для выполнения трех общих задач, основанных на членстве пользователя в группе:

Он сопоставляет диск H: с домашним каталогом пользователя, вызывая метод MapNetworkDrive объекта сети WSH в сочетании со свойством UserName объекта сети WSH. Он использует объект ADSI IADsADSystemInfo для получения отличительного имени текущего пользователя, которое, в свою очередь, используется для подключения к соответствующему объекту пользователя в Active Directory. Как только соединение установлено, список групп, членом которых является пользователь, извлекается с использованием атрибута memberOf пользователя. Многозначный список имен групп объединяется в одну строку с помощью функции Join VBScript, чтобы упростить поиск имен целевых групп.

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

  • Откройте Блокнот.
  • Скопируйте и вставьте или введите следующее:

    Const ENGINEERING_GROUP = "cn=engineering" Const FINANCE_GROUP = "cn=finance" Const HUMAN_RESOURCES_GROUP = "cn=human resources"  Set wshNetwork = CreateObject("WScript.Network") wshNetwork.MapNetworkDrive "h:", "\\FileServer\Users\" & wshNetwork.UserName  Set ADSysInfo = CreateObject("ADSystemInfo") Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName) strGroups = LCase(Join(CurrentUser.MemberOf))  If InStr(strGroups, ENGINEERING_GROUP) Then  wshNetwork.MapNetworkDrive "g:", "\\FileServer\Engineering\" wshNetwork.AddWindowsPrinterConnection "\\PrintServer\EngLaser" wshNetwork.AddWindowsPrinterConnection "\\PrintServer\Plotter" wshNetWork.SetDefaultPrinter "\\PrintServer\EngLaser"  ElseIf InStr(strGroups, FINANCE_GROUP) Then  wshNetwork.MapNetworkDrive "g:", "\\FileServer\Finance\" wshNetwork.AddWindowsPrinterConnection "\\PrintServer\FinLaser" wshNetWork.SetDefaultPrinter "\\PrintServer\FinLaser"  ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then  wshNetwork.MapNetworkDrive "g:", "\\FileServer\Human Resources\" wshNetwork.AddWindowsPrinterConnection "\\PrintServer\HrLaser" wshNetWork.SetDefaultPrinter "\\PrintServer\HrLaser"  End If 
  • В меню Файл выберите Сохранить как.

  • В разделе Сохранить в выберите каталог, соответствующий общей папке Netlogon контроллера домена (обычно SystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scripts, где DomainName - полное доменное имя домена).
  • В поле Тип файла выберите Все файлы.
  • В поле «Имя файла» введите имя файла, затем .vbs и нажмите «Сохранить». WSH использует расширение .vbs для идентификации файлов, содержащих команды VBScript.
Всегда приятно видеть, что кому-то понравился ответ :-D Ivo Flipse 10 лет назад 0
я почти хочу включить этот CW и пометить его [faq] :) quack quixote 9 лет назад 0
Будь моим гостем @quack ;-) FAQ для чего на самом деле? Ivo Flipse 9 лет назад 0
16
Jeff

Вы можете создать запланированное задание, которое будет запускаться, когда ваш компьютер разблокирован:

  1. Пуск> Администрирование> Планировщик задач
  2. левая панель: выберите библиотеку планировщика заданий
  3. правая панель: нажмите «Создать задачу» (ПРИМЕЧАНИЕ: это единственный способ получить правильный триггер)
  4. в диалоговом окне Создать задачу:
    • Вкладка «Общие» - укажите название вашей задачи
    • Вкладка «Триггеры» - нажмите «Создать» и выберите «Разблокировать на рабочей станции»
    • Вкладка «Действие» - нажмите «Создать» и нажмите «Обзор»…, чтобы найти сценарий
    • Вкладка «Условия» - снимите флажок Запускать задание, только если компьютер подключен к сети переменного тока

Также я подправил путь в скрипте для чтения

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt 
14
Bruce McLeod

Самым простым способом, который я могу придумать, было бы поместить это в файл .bat в вашей папке автозагрузки.

Более сложным способом было бы добавить командный файл в реестр в

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 

ключ реестра.

Если вы хотите запустить это, когда ** любой ** пользователь входит в систему, вам нужно поместить его в папку запуска All Users (*% allusersprofile% / Start Menu \ Programs \ Startup *), или сделать запись в разделе Run реестра LocalMachine: * HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run *) Treb 10 лет назад 8
Я запускаю .exe таким способом, но есть ли способ запустить его тихо? Не открывая и не открывая cmd? bzupnick 4 года назад 0
2
Axxmasterr

Хороший альтернативный метод - создать командный файл с командами, которые вы хотите запустить в них. Затем вы укажите в редакторе политик на компьютере, что он запускает сценарий входа в систему как часть процесса входа в систему. Небольшое примечание: эта опция доступна только в XP Pro, но не в домашней версии.

Руководство по редактору групповой политики здесь

2
Tomas Tintera

Кто-нибудь знает, может ли это использоваться для запуска, когда экран заблокирован / разблокирован?

Есть способ для Windows 7 и / или Windows Server 2008.

Используйте Task Scheduler, создайте новую базовую задачу, в качестве триггера используйте «Когда я вхожу в систему».

Вы не можете использовать простую задачу, если хотите, чтобы триггер был «Разблокирована на рабочей станции» Jeff 5 лет назад 0
1
Aryeh Leib Taurog

Незачем! В Windows уже есть механизм для регистрации этого в журнале событий. Идентификатор события - 4624 (528 в системах до Vista).