Автоматичний вхід у 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.