Автоматичний вхід у Windows XP / Win-7, використовуючи пакетний файл (або сценарій VB), що зберігається у стандартному USB-накопичувачі


10

Навіщо мені це потрібно :

У мене в Pen Pen повно пакетних скриптів та інших інструментів діагностики. У мене 75 автономних (немережевих) ПК в основному з Win-XP-Pro SP-2, в 2 лабораторіях. Мені часто потрібно входити на кожен ПК з обліковим записом адміністратора, щоб щось налаштувати або діагностувати.

Тому коли я запускаю ПК, мені щоразу вручну потрібно вибирати ім’я користувача з екрана входу, а також вводити його пароль.

Тепер я хочу увійти до адміністратора Acc. Автоматично (програмно), якщо мій накопичувач ручки підключений до ПК.

Що я знаю:

Я знаю, що можна запускати скрипти (пакетні файли) перед входом користувача в XP / Win7. Я написав пакетний файл і зберег у локальному ПК. Я налаштував його в груповій політиці для запуску системи під час запуску системи (Місце розташування GPO: Конфігурація комп'ютера \ Налаштування Windows \ Сценарії (запуск / вимкнення) \ Sartup ). Цей пакетний файл успішно виявляє ", якщо пристрій ручки підключено чи ні.

У мене є ще один пакетний файл (наразі порожній), що зберігається на Pen Drive.

1-й пакетний файл здійснює пошук у всіх дисках від C до Z для отримання другого пакетного файлу (login.bat), використовуючи цикл, якщо файл присутній, він передбачає наявність приводу пера та надалі викликає 2-й пакетний файл (login.bat) для продовження.

Що я не знаю:

Тепер я не знаю, яким повинен бути код файлу login.bat, або я не знаю, як правильно ввійти в систему.

Які ще альтернативи на увазі:

Не обов’язково використовувати лише пакетний файл. Я також можу врахувати, "якщо у вас є будь-який інший варіант для автоматичного входу в систему, як-от використання, VB Scriptабо будь-якого іншого виконуваного третьої частини",

Редагувати:

Відповідно до цього питання Встановити користувача для автоматичного входу в Windows за допомогою пакетного сценарію Я можу створити сценарій для зміни записів реєстру та дозволу автоматичного входу в систему. Незважаючи на те, що це працює, вам доведеться перезавантажити комп'ютер, щоб зміни були застосовані. Якого я хочу уникати. Для запуску сценарію та перезавантаження потрібно більше часу, ніж просто вхід в систему особисто.

Я хотів би мати можливість увійти автоматично, на вимогу. Це означає, що після того, як я підключу свій Pen Drive, сценарій повинен мати можливість увійти до мене в обліковому записі адміністратора без перезавантаження ПК.

Я читаю в Інтернеті, це можна досягти, створивши файл dll GINA, але я не маю досвіду роботи в цьому полі. Будь-які ідеї, як це можна реалізувати?



@ DA - Як ви можете сказати, що це дублікат "Встановити користувача для автоматичного входу ...".? Чи прочитали ви повне пояснення питання? А чи знаєте ви, що означає "Налаштування користувача для автоматичного входу в систему? Це не дублікат зазначеного вами. Я не хочу встановлювати користувача для автоматичного входу при кожному включенні ПК. Це дозволить користувач автоматично входить у систему, незалежно від того, приєднано він чи ні. Мені потрібен пакетний файл або файл vbscript, щоб ініціювати вхід "Тільки якщо мій диск із ручкою приєднано до ПК. Уважно прочитайте повне запитання.
— Ajaib Singh,

@DA Сер, я уважно прочитав вказану відповідь. Навіть Інтернет наповнений цим підручником. 1-е "це не перевіряє наявність Pen Drive для умовного дозволу автоматичного входу. 2-й. "Ви підкреслили опцію" Встановити, скільки разів вона повинна входити ". Мені це не підходить. Дозвольте мені пояснити, чому. У мене є лише 2 можливі значення, які можна призначити "Встановити, скільки разів воно повинно входити". 1-е - це 1, а 2-е - «більше, ніж одне»
— 177

Якщо я встановлю його як 1: це дозволить автоматично входити в систему лише один раз. При наступному запуску 'я повинен ввести ім'я користувача та пароль. Якщо я встановив його більше, ніж 1 (скажіть 10), він автоматично входитиме вказану кількість разів. Тепер, поки не закінчиться вказана кількість разів, "кожен користувач за замовчуванням увійде в обліковий запис адміністратора. Якого я не хочу. Моя вимога: "Дозволити нескінченну кількість входів", якщо моє перо підключене, інакше не дозволяється автоматичний вхід.
— Аджайб Сінгх

2
Запитання: (1) Чи є у вас лише один вхід для всіх комп'ютерів з тим самим користувачем / паролем? (2) Чи можете ви встановити програмне рішення (якщо воно існує) на всі комп'ютери? (3) Ви б заплатили за комерційний продукт?
— harrymc

Відповіді:


2

Можна ввійти програмно у Windows, але не за допомогою простого пакетного файлу. Натомість вам потрібно створити DLL за допомогою C ++ (а може бути, C # - але це не рекомендується ). У Windows XP (і раніше) цей об'єкт називається GINA .
(Починаючи з Vista, вам потрібно створити постачальника довіри.)

Довідково: Вхід у Windows xp програмно


Привіт wp78de "; Я вирішив свою проблему із сценарієм VB. Який лише пересилає ключі на екрані входу, і Мій обліковий запис адміністратора заходить у систему. Дякую за відповідь.
— Ajaib Singh

1

Я випадково знайшов рішення сам. Як згадувалося в питанні, у мене є 2 сценарії: перший проживає на локальному комп'ютері і 2-й проживає в Pen Drive. 1-й (.bat) попередньо налаштований для запуску під час запуску системи ( Дивіться, як призначити сценарії запуску комп'ютера? ), І він викликає 2-й (.vbs), якщо підключено привід пера.

Як це працює:

Робота першого файлу вже описана у запитанні; і робота 2-го сценарію дуже проста, але відповідає моїм потребам. Цей сценарій просто надсилає натискання клавіш на екрані входу в тій же послідовності, як і я на клавіатурі для входу в систему. Тут я хотів би поділитися цілим кодом обох сценаріїв. Сподіваюся, це допоможе багатьом, як я, які не хочуть втручатися у внутрішні файли операційної системи, такі як GINA.

Код такий:

1-й сценарій (сценарій входу)

Ім'я: "Find PD.bat"

Розташування:

"%SYSTEMROOT%\System32\GroupPolicy\Machine\Scripts\Startup\Find PD.bat"

Код

@ECHO OFF
SET vCount=1
set LogFl=%~d0%~p0%Find PD.log
echo Process Started...>"%LogFl%"

:RECHK
SET PD=
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
    IF EXIST "%%i:\OTHER\RESTORE\OTHER\FillCred.vbs" (
        SET PD=%%i
    )
)

:FOUND
echo:>>"%LogFl%"
IF /I DEFINED PD (
    echo %time% : Pen Drive Found with '%PD%' Drive Letter>>"%LogFl%"
    "%PD%:\OTHER\RESTORE\OTHER\FillCred.vbs"
) ELSE (
    IF %vCount% LSS 11 (
        set /a "vCount=vCount+1"
        echo %time% : Retry: %vCount% >>"%LogFl%"
        ping -n 2 -w 200  1.1.1.1>nul
        GOTO RECHK
    ) ELSE (
        echo %time% : Pen Drive Not Found. Exiting>>"%LogFl%"
        EXIT /b 1
    ) 
)
:EOF

2-й сценарій:

Ім'я: "FillCred.vbs"

Розташування:

"<PenDriveRoot>\OTHER\RESTORE\OTHER\FillCred.vbs"

Код:

set WshShell = CreateObject("WScript.Shell")
WScript.sleep 1000
WshShell.SendKeys "{DOWN}"
WScript.sleep 50
WshShell.SendKeys "ReplaceThisWithYourPassword"
WScript.sleep 50
WshShell.SendKeys "{ENTER}"

Пам'ятайте:

1) Це тестується лише на Windows XP.

2) Це буде працювати лише в тому випадку, якщо ваша Windows показує екран входу за замовчуванням (він же "вітальний екран")

3) Ви повинні змінити 2-й сценарій для своїх ключових послідовностей.

4) Це не спрацює, якщо вашій системі потрібен натискання клавіш Ctrl + Alt + Delete перед входом у систему.

5) Це дуже базове рішення, але ви можете зробити його вдосконаленим шляхом редагування 2-го сценарію. це буде працювати до тих пір, поки система не дозволить натиснути клавішу на екрані входу.

Дякую.

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