26

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

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

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

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

6 ответов6

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.
17

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

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

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

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

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

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

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

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

2

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

2

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

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

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

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .