Автоматично запускати сценарій, коли я входжу в Windows


27

Як я можу автоматично запустити скрипт під час входу в Windows?

Я хотів би запустити щось подібне кожного разу, коли я ввійшов у свій комп’ютер:

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

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


прихильна відповідь - це дуже високий октан - використовуючи один-лайнер, я пропоную щось більш скромне (але ефективне) нижче ... ;-)
Джефф

Відповіді:


19

Ви можете створити заплановане завдання, яке буде виконуватися, коли комп'ютер розблокований:

  1. Пуск> Адміністративні інструменти> Планувальник завдань
  2. ліва панель: виберіть Бібліотека планувальників завдань
  3. права панель: натисніть Створити завдання ... (ПРИМІТКА: це єдиний спосіб отримати правильний тригер)
  4. у діалоговому вікні Створити завдання:
    • Вкладка Загальні - вкажіть назву для свого завдання
    • Вкладка Тригери - натисніть кнопку Створити ... та виберіть На розблоку робочої станції
    • Вкладка Дії - натисніть кнопку Створити ... та натисніть кнопку Огляд ..., щоб знайти свій сценарій
    • Вкладка Умови - зніміть прапорець Почніть завдання лише в тому випадку, якщо комп'ютер живиться від змінного струму

Також я налаштував шлях у сценарії для читання

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

22

Якщо у вас вже є сценарій:

Щоб призначити користувачеві або групі сценарій входу

  • Відкрите управління комп'ютером.
  • У дереві консолі натисніть Користувачі.

Де? Системні інструменти / Локальні користувачі та групи / Користувачі

  • Двічі клацніть користувача, якому ви хочете призначити сценарій для входу.
  • Перейдіть на вкладку Профіль.
  • У полі Сценарій входу введіть шлях та назву сценарію входу, який потрібно призначити цьому користувачеві, а потім натисніть кнопку ОК.

Ще ось зручний "HowTo" від Microsoft

Створення сценаріїв для входу

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

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

Він відображає диск H: у домашній каталог користувача, викликаючи метод MapNetworkDrive об’єкта WSH Network у поєднанні з властивістю UserName об'єкта WSH Network. Він використовує об’єкт ADSI IADsADSystemInfo для отримання розрізненого імені поточного користувача, яке, в свою чергу, використовується для підключення до відповідного об’єкту користувача в Active Directory. Після встановлення з'єднання список груп, користувачем яких є член, отримується за допомогою атрибута memberOf користувача. Багатозначний список назв груп об’єднується в одну рядок за допомогою функції приєднання 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
Іво Фліпс

я майже хочу повернути цей CW і позначити його faq :)
шарлатанний кіхот

Будь моїм гостем @quack ;-) FAQ щодо того, що насправді?
Іво Фліпс

14

Найпростіший спосіб, який я можу придумати, - це помістити це у .bat файл у вашій папці запуску.

Складнішим способом було б додати пакетний файл до реєстру в

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

ключ реєстру.


8
Якщо ви хочете запустити це, коли будь-який користувач увійде в систему, вам потрібно помістити його в папку запуску «Всі користувачі» ( % allusersprofile% / Меню «Пуск» / «Програми \ Запуск» ) або зробити запис у розділі «Виконати» у реєстрі локального механізму LocalMachine: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run )
Треб

Я запускаю .exe таким чином, але чи є спосіб, щоб він запускався спокійно? Не відкриваючи та тримаючи відкритим cmd?
bzupnick

2

Хороший альтернативний метод - створити пакетний файл з командами, які ви хочете виконати в них. Далі ви вкажете в редакторі політики на машині, що він запускає скрипт входу як частина процесу входу. Швидке зауваження: ця опція доступна лише у XP Pro, а не в домашній версії.

Підручник редактора групової політики тут


2

Хтось знає, чи можна це використовувати для запуску, коли екран заблокований / розблокований?

Існує спосіб для Windows 7 та / або Windows Server 2008.

Використовуйте Планувальник завдань, створіть нове основне завдання, оскільки Тригер використовує "Коли я входжу".


Ви не можете використовувати основне завдання, якщо хочете, щоб тригер був "Розблокування робочої станції"
Jeff

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.