9

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

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

2 ответа2

2

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

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

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

Благодарю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .