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

27

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

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

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

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

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

Ответы:

19

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

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

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

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
Джефф
источник
22

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

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

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

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

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

Еще вот удобное "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
Я почти хочу включить этот CW и пометить его как
часто
Будь моим гостем @quack ;-) FAQ для чего на самом деле?
Иво Флипс
14

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

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

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

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

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

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

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

Axxmasterr
источник
2

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

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

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

Томас Тинтера
источник
Вы не можете использовать базовое задание, если хотите, чтобы триггер был «Разблокирована на рабочей станции»
Джефф