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

10

Зачем мне это нужно :

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

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

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

Что я знаю:

Я знаю, что можно запускать сценарии (пакетные файлы) до входа пользователя в XP / Win7. Я написал командный файл и сохранил на локальном ПК. Я настроил его в групповой политике для запуска при запуске системы (Местоположение объекта групповой политики: Конфигурация компьютера \ Конфигурация Windows \ Сценарии (запуск / завершение работы) \ Sartup ). Этот пакетный файл успешно определяет, подключен ли перо или нет.

У меня есть другой пакетный файл (в настоящее время пустой), хранящийся на Pen Drive.

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

Что я не знаю:

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

Какие есть другие альтернативы в виду:

Не обязательно использовать только командный файл. Я также могу рассмотреть вопрос «есть ли у вас какая-либо другая опция для автоматического входа в систему, например, с использованием VB Scriptили любой другой исполняемый файл третьей части»

Редактировать:

В соответствии с этим вопросом Установить пользователя для автоматического входа в Windows с помощью пакетного сценария, я могу создать сценарий для изменения записей реестра и разрешить автоматический вход в систему. Даже если это работает, вы должны перезагрузить компьютер, чтобы изменения вступили в силу. Которого я хочу избежать. Запуск сценария и перезагрузка занимает больше времени, чем просто вход в систему лично.

Я хотел бы иметь возможность войти в систему автоматически, по требованию. Это означает, что после того, как я подключу свой Pen Drive, сценарий сможет войти в систему под учетной записью администратора без перезагрузки компьютера.

Я читал в Интернете, что это может быть достигнуто путем создания файла GINA DLL, но у меня нет опыта в этой области. Есть идеи, как это можно реализовать?

Аджаиб Сингх
источник
@ DA-Как вы можете сказать, что это дубликат "Установить пользователя для автоматического входа ...".? Вы прочитали полное объяснение вопроса? И знаете ли вы, что означает «Настройка пользователя для автоматического входа в систему. Это не дубликат указанного вами. Я не хочу устанавливать пользователя для автоматического входа каждый раз при включении компьютера. Это позволит Пользователь может автоматически войти в систему, независимо от того, подключен или нет Pen Drive. Мне нужен пакетный файл или файл VBScript для инициализации входа в систему «Только если мой Pen Drive подключен к ПК. Внимательно прочитайте полный вопрос.
Ajaib Singh
@DA Сэр, я внимательно прочитал указанный ответ. Даже интернет полон этого урока. Во-первых, он не проверяет наличие Pen Drive для условного разрешения автоматического входа. 2nd 'Как вы выделили опцию «Установить, сколько раз он должен войти в систему». Это не подходит для меня. Позвольте мне объяснить, почему. У меня есть только 2 возможных значения, которые можно назначить для «Установить, сколько раз он должен войти в систему». 1-й - 1, 2-й - «больше, чем один»
Аджайб Сингх,
Если я установлю его как 1: он разрешит автоматический вход только один раз. При следующих запусках я должен ввести имя пользователя и пароль. Если я установлю его больше 1 (скажем, 10), он будет автоматически входить в систему указанное количество раз. Теперь до тех пор, пока не истечет указанное количество раз, каждый пользователь по умолчанию войдет в учетную запись администратора. Который я не хочу. Мое требование: «Разрешить бесконечное количество входов в систему», если мой флеш-накопитель подключен, иначе не разрешите автоматический вход.
Аджайб Сингх
2
Вопросы: (1) У вас есть только один вход для всех компьютеров с одним и тем же пользователем / паролем? (2) Можете ли вы установить программное решение (если оно существует) на все компьютеры? (3) Вы бы заплатили за коммерческий продукт?
harrymc

Ответы:

2

Можно программно войти в Windows, но не с помощью простого командного файла. Вместо этого вам нужно собрать DLL с использованием C ++ (или, возможно, C # - но это не рекомендуется ). В Windows XP (и ранее) это средство называется GINA .
(Начиная с Vista, вам нужно создать провайдер учетных данных.)

Ссылка: вход в Windows XP программно

wp78de
источник
Привет, wp78de "; Я решил свою проблему с VB Script. Который просто посылает ключи на экране входа в систему, и Моя учетная запись администратора регистрируется. Спасибо за ответ.
Аджайб Сингх
1

Я случайно нашел решение самостоятельно. Как уже упоминалось в вопросе, у меня есть 2 сценария: 1-й находится на локальном компьютере, а 2-й находится на Pen Drive. 1st (.bat) предварительно настроен для запуска при запуске системы ( см. Как назначить сценарии запуска компьютера? ) И вызывает 2nd (.vbs), если подключен флеш-накопитель.

Как это работает:

Работа 1-го файла уже описана в Вопросе; и работа над вторым сценарием очень проста, но удовлетворяет мои потребности. Этот скрипт просто посылает нажатия клавиш на экране входа в той же последовательности, в которой я печатаю на клавиатуре для входа в систему. Здесь я хотел бы поделиться всем кодом обоих скриптов. Надеюсь, что это поможет многим, таким как я, которые не хотят вмешиваться во внутренние файлы операционной системы, такие как 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) Вы должны изменить второй сценарий для своих последовательностей клавиш.

4) Это не будет работать, если ваша система требует нажатия Ctrl + Alt + Delete перед входом в систему.

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

Спасибо.

Аджаиб Сингх
источник