Automatyczne logowanie do systemu Windows XP / Win-7 przy użyciu pliku wsadowego (lub skryptu VB) zapisanego na standardowym dysku USB

10

Dlaczego potrzebuję tego :

Mam Pen Drive pełen skrawków partii i innych narzędzi diagnostycznych. Mam 75 samodzielnych (nie podłączonych do sieci) komputerów, głównie z Win-XP-Pro SP-2, w 2 laboratoriach. Często muszę logować się na każdym komputerze za pomocą konta administratora, aby coś skonfigurować lub zdiagnozować.

Więc kiedy uruchamiam komputer, za każdym razem muszę ręcznie wybrać nazwę użytkownika z ekranu logowania, a także wpisać hasło.

Teraz chcę się zalogować do Admin Acc. Automatycznie (programowo), jeśli mój pendrive jest podłączony do komputera.

Co wiem:

Wiem, że możliwe jest uruchamianie skryptów (plików wsadowych) przed zalogowaniem się użytkownika w XP / Win7. Napisałem plik wsadowy i zapisałem na lokalnym komputerze. Skonfigurowałem go w zasadach grupy, aby uruchamiał go podczas uruchamiania systemu (lokalizacja GPO: Konfiguracja komputera \ Ustawienia systemu Windows \ Skrypty (uruchamianie / zamykanie) \ Sartup ). Ten plik wsadowy z powodzeniem wykrywa „czy pendrive jest podłączony czy nie.

Mam inny plik wsadowy (obecnie pusty) zapisany na Pen Drive.

Pierwszy plik wsadowy przeszukuje wszystkie dyski od C do Z w poszukiwaniu drugiego pliku wsadowego (login.bat) za pomocą pętli, jeśli plik jest obecny, zakłada, że ​​pendrive jest obecny i dalej wywołuje drugi plik wsadowy (login.bat), aby kontynuować.

Czego nie wiem:

Teraz nie wiem, jaki powinien być kod pliku login.bat lub nie wiem, jak zalogować się pragmatycznie.

Jakie są inne alternatywy na myśli:

Nie jest konieczne używanie tylko pliku wsadowego. Mogę również rozważyć „jeśli masz jakąkolwiek inną opcję automatycznego logowania, taką jak użycie VB Scriptlub inny plik wykonywalny trzeciej części”,

Edytować:

Zgodnie z tym pytaniem Ustaw użytkownika do automatycznego logowania w systemie Windows za pomocą skryptu wsadowego. Mogę utworzyć skrypt, aby zmodyfikować wpisy rejestru i umożliwić automatyczne logowanie. Mimo że to działa, musisz ponownie uruchomić komputer, aby zastosować zmiany. Tego chcę uniknąć. Uruchomienie skryptu i ponowne uruchomienie zajmuje więcej czasu niż zalogowanie się osobiście.

Chciałbym mieć możliwość automatycznego logowania na żądanie. Oznacza to, że po podłączeniu Pen Drive skrypt powinien móc mnie zalogować na koncie administratora bez ponownego uruchamiania komputera.

Czytam w Internecie, można to osiągnąć, tworząc plik dll GINA, ale nie mam doświadczenia w tej dziedzinie. Wszelkie pomysły, w jaki sposób można to zrealizować?

Ajaib Singh
źródło
@ DA-Jak możesz powiedzieć, że jest to duplikat „Ustaw użytkownika na automatyczne logowanie ...”.? Czy przeczytałeś pełne wyjaśnienie pytania? I czy wiesz, co należy rozumieć przez „Ustawianie użytkownika do automatycznego logowania. To nie jest duplikat tego określonego przez Ciebie. Nie chcę ustawiać użytkownika do automatycznego logowania przy każdym włączeniu komputera. Pozwoli to użytkownika, aby logował się automatycznie, niezależnie od tego, czy Pen Drive jest podłączony, czy nie. Potrzebuję pliku wsadowego lub pliku vbscript, aby zainicjować logowanie „Tylko jeśli mój pen drive jest podłączony do komputera. Przeczytaj uważnie całe pytanie.
Ajaib Singh
@ DA Sir uważnie przeczytałem podaną odpowiedź. Nawet Internet jest pełny dzięki temu samouczkowi. 1. „nie sprawdza obecności Pen Drive, aby warunkowo zezwolić na automatyczne logowanie. 2. „Jak zaznaczyłeś opcję„ Ustaw, ile razy ma się logować ”. To nie jest dla mnie odpowiednie. Pozwól mi wyjaśnić dlaczego. Mam tylko 2 możliwe wartości, które można przypisać do „Ustaw, ile razy ma się logować”. 1. to 1, a 2. to „więcej niż jeden”
Ajaib Singh
Jeśli ustawię go na 1: Pozwoli to na automatyczne logowanie tylko raz. Przy kolejnych start-upach muszę podać nazwę użytkownika i hasło. Jeśli ustawię wartość większą niż 1 (powiedz 10), automatycznie zaloguje się określoną liczbę razy. Teraz, aż upłynie określona liczba razy, „każdy użytkownik domyślnie zaloguje się na konto administratora. Którego nie chcę. Moje wymaganie to: „Zezwalaj na nieskończoną liczbę loginów”, o ile mój pendrive jest podłączony, inaczej nie zezwalaj na automatyczne logowanie.
Ajaib Singh,
2
Pytania: (1) Czy masz tylko jedno logowanie do wszystkich komputerów z tym samym użytkownikiem / hasłem? (2) Czy możesz zainstalować oprogramowanie (jeśli istnieje) na wszystkich komputerach? (3) Czy zapłaciłbyś za produkt komercyjny?
harrymc,

Odpowiedzi:

2

Możliwe jest programowe logowanie do systemu Windows, ale nie za pomocą prostego pliku wsadowego. Zamiast tego musisz zbudować bibliotekę DLL przy użyciu C ++ (a może C # - ale nie jest to zalecane ). W systemie Windows XP (i wcześniej) ta funkcja nazywa się GINA .
(Począwszy od Visty, musisz zbudować dostawcę poświadczeń.)

Odniesienia: Zaloguj się do systemu Windows XP programowo

wp78de
źródło
Cześć wp78de "; Rozwiązałem problem ze skryptem VB. Które po prostu wysyłają klucze na ekranie logowania, a moje konto administratora zostaje zalogowane. Dzięki za odpowiedź.
Ajaib Singh
1

Przypadkowo znalazłem rozwiązanie samodzielnie. Jak wspomniano w pytaniu, mam 2 skrypty: 1. rezyduje na komputerze lokalnym i 2. rezyduje na Pen Drive. 1st (.bat) jest wstępnie skonfigurowany do uruchamiania podczas uruchamiania systemu ( zobacz, jak przypisać skrypty uruchamiania komputera? ) I wywołuje 2nd (.vbs), jeśli podłączony jest pendrive.

Jak to działa:

Działanie 1. pliku jest już opisane w pytaniu; a działanie drugiego skryptu jest bardzo proste, ale spełnia moje potrzeby. Ten skrypt po prostu wysyła naciśnięcia klawiszy na ekranie logowania w tej samej kolejności, w jakiej wpisuję się na klawiaturze podczas logowania. Tutaj chciałbym udostępnić cały kod obu skryptów. Mam nadzieję, że pomoże to wielu takim jak ja, którzy nie chcą ingerować w wewnętrzne pliki systemu operacyjnego, takie jak GINA.

Kod to:

1st Script (skrypt logowania)

Imię: "Find PD.bat"

Lokalizacja:

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

Kod

@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

Drugi skrypt:

Imię: "FillCred.vbs"

Lokalizacja:

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

Kod:

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

Zapamiętaj:

1) Jest to testowane tylko w systemie Windows XP.

2) Działa to tylko wtedy, gdy system Windows wyświetla domyślny ekran logowania (inaczej „Ekran powitalny”)

3) Trzeba zmodyfikować 2nd skryptu dla swoich kluczowych sekwencji.

4) To nie zadziała, jeśli Twój system wymaga naciśnięcia Ctrl + Alt + Delete przed zalogowaniem.

5) Jest to bardzo podstawowe rozwiązanie, ale możesz je rozwinąć, edytując 2. skrypt. będzie to działać tak długo, jak system zezwala na naciśnięcia klawiszy na ekranie logowania.

Dzięki.

Ajaib Singh
źródło