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

1412
Ajaib Singh

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

У меня есть 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, но у меня нет опыта в этой области. Есть идеи, как это можно реализовать?

9
Возможный дубликат [Установить пользователя для автоматического входа в Windows через пакетный скрипт] (https://superuser.com/questions/514265/set-user-for-auto-logon-on-windows-via-batch-script) Jimmy_A 6 лет назад 1
@ DA-Как вы можете сказать, что это дубликат "Установить пользователя для автоматического входа ...".? Вы прочитали полное объяснение вопроса? И знаете ли вы, что означает «Настройка пользователя для автоматического входа в систему. Это не дубликат указанного вами. Я не хочу устанавливать пользователя для автоматического входа в систему каждый раз при включении ПК. Это позволит Пользователь может автоматически войти в систему, независимо от того, подключен ли Pen Drive. Мне нужен командный файл или файл VBScript для инициализации входа в систему «Только если мой Pen Drive подключен к ПК. Внимательно прочитайте полный вопрос. Ajaib Singh 6 лет назад 0
@DA Сэр, я внимательно прочитал указанный ответ. Даже интернет полон этого урока. Во-первых, он не проверяет наличие Pen Drive для условного разрешения автоматического входа. 2nd 'Как вы отметили опцию "Установить, сколько раз он должен войти в систему". Это не подходит для меня. Позвольте мне объяснить, почему. У меня есть только 2 возможных значения, которые могут быть назначены «Установить, сколько раз он должен войти в систему». 1-й - 1, а 2 - «больше, чем один» Ajaib Singh 6 лет назад 0
Если я установлю его как 1: он разрешит автоматический вход только один раз. При следующих запусках я должен ввести имя пользователя и пароль. Если я установлю его больше 1 (скажем, 10), он будет автоматически входить в систему указанное количество раз. Теперь до тех пор, пока не истечет указанное количество раз, каждый пользователь по умолчанию войдет в учетную запись администратора. Который я не хочу. Мое требование: «Разрешить бесконечное число входов в систему», если мой флеш-накопитель подключен, иначе не разрешите автоматический вход в систему. Ajaib Singh 6 лет назад 0
Хорошо, сэр, я собираюсь проверить это, комбинируя оба сценария. Но если это требует перезагрузки, чтобы применить рег. Изменения 'это снова непригодно для использования. Хотя сейчас это станет ясно по тестированию. Благодарю. Ajaib Singh 6 лет назад 0
Если вы не можете копировать движения мыши и нажатия клавиш с помощью скрипта, я могу сказать вам, что реестр будет вашим лучшим шансом Jimmy_A 6 лет назад 0
К сожалению, это требует перезагрузки. Ajaib Singh 6 лет назад 0
Да, это единственная проблема, как я уже говорил. Еще одна мысль. Почему бы вам не использовать удаленный доступ. Вы можете сохранить свои сессии и учетные данные и запустить свои скрипты с вашего компьютера Jimmy_A 6 лет назад 0
@DA Сэр, мне это нужно для моих автономных (не сетевых) компьютеров. У меня есть другая сетевая лаборатория, где я уже использую удаленный доступ. Ajaib Singh 6 лет назад 0
Я читал в Интернете, это может быть достигнуто путем создания файла GINA DLL. Но я не профессиональный программист. Так что я не знаю, как это реализовать, даже не знаю, какие инструменты необходимы для создания пользовательского файла DLL GINA. Хотя я немного знаю C ++, немного больше о VB.Net. Если у вас есть идеи для этого, пожалуйста, поделитесь со мной ... Ajaib Singh 6 лет назад 0
Вопросы: (1) У вас есть только один вход для всех компьютеров с одним и тем же пользователем / паролем? (2) Можете ли вы установить программное решение (если оно существует) на все компьютеры? (3) Вы бы заплатили за коммерческий продукт? harrymc 6 лет назад 2
Привет @harrymc; У меня одно имя пользователя и пароль для всех компьютеров? Ajaib Singh 6 лет назад 0
@harrymc 2) Я могу установить стороннее программное обеспечение для этого. 3) Моя организация не позволит мне платить за коммерческий продукт. Ajaib Singh 6 лет назад 0

2 ответа на вопрос

2
wp78de

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

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

Привет, wp78de "; Я решил свою проблему с VB Script. Он просто отправляет ключи на экране входа в систему, и моя учетная запись администратора регистрируется. Спасибо за ответ. Ajaib Singh 6 лет назад 0
1
Ajaib Singh

Я случайно нашел решение самостоятельно. Как уже упоминалось в вопросе, у меня есть 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 "" WScript.sleep 50 WshShell.SendKeys "ReplaceThisWithYourPassword" WScript.sleep 50 WshShell.SendKeys "" 

Помните:

1) Это проверено только на Windows XP.

2) Это будет работать только в том случае, если ваша Windows показывает экран входа по умолчанию (он же «Экран приветствия»)

3) Вы должны изменить второй сценарий для ваших последовательностей клавиш.

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

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

Благодарю.

Похожие вопросы