Login automático do Windows XP / Win-7 usando um arquivo em lote (ou VB Script) armazenado em um pen drive USB padrão

9

Por que preciso disso :

Eu tenho o Pen Drive cheio de scripts em lote e outras ferramentas de diagnóstico. Eu tenho 75 PCs autônomos (não em rede) principalmente com o Win-XP-Pro SP-2, em dois laboratórios. Muitas vezes preciso fazer login em cada PC com uma conta de administrador para configurar ou diagnosticar algo.

Então, quando eu inicio um PC, cada vez que eu tenho que selecionar manualmente o nome de usuário a partir da tela de login e também digite sua senha.

Agora quero fazer login no Admin Acc. Automaticamente (programaticamente) se o meu pen drive estiver conectado ao PC.

O que eu sei:

Eu sei que é possível executar Scripts (Batch Files) antes do login do usuário no XP / Win7. Eu escrevi um arquivo de lote e salvei no PC local. Eu configurei na política de grupo para executá-lo na inicialização do sistema (Local do GPO: Configuração do Computador \ Configurações do Windows \ Scripts (Inicialização / Desligamento) \ Sartup ). Esse arquivo em lote detecta com êxito 'se o pen drive estiver conectado ou não.

Eu tenho outro arquivo de lote (atualmente em branco) armazenado no Pen Drive.

O primeiro arquivo de lote pesquisa todas as unidades de C a Z para o 2º arquivo (login.bat) usando um loop. Se o arquivo estiver presente, ele pressupõe que o pen drive está presente e chama o segundo arquivo (login.bat) para prosseguir.

O que eu não sei:

Agora eu não sei qual deve ser o código do arquivo login.bat ou não sei 'como fazer o login pragmaticamente.

Quais são as outras alternativas em mente:

Não é necessário usar apenas um arquivo em lotes. Eu também posso considerar 'se você tiver alguma outra opção para login automático como usar VB Script ou qualquer outro executável da terceira parte',

Editar:

De acordo com essa pergunta Definir usuário para logon automático no windows via script em lote Eu posso criar um script para modificar as entradas do registro e permitir o logon automático. Mesmo que isso funcione, você precisa reiniciar o PC para que as alterações sejam aplicadas. O que é algo que eu quero evitar. Leva mais tempo para executar o script e reinicializar do que apenas fazer login pessoalmente.

Eu gostaria de poder fazer logon automaticamente, sob demanda. Isso significa que uma vez que eu conecto o meu Pen Drive, o script deve ser capaz de logar-me, na conta de administrador, sem reiniciar o PC.

Eu li na web isso pode ser conseguido através da criação de um arquivo dll GINA, mas eu não tenho experiência nesse campo. Alguma idéia de como isso pode ser implementado?

    
por Ajaib Singh 08.08.2017 / 12:04

2 respostas

2

É possível fazer login programaticamente no Windows, mas não com um arquivo em lotes simples. Em vez disso, você precisa criar uma DLL usando C ++ (ou talvez C # - mas é não recomendado ). No Windows XP (e antes), esse recurso é chamado de GINA . < br> (A partir do Vista, você precisa criar um Provedor de Credenciais.)

Referência: Login para o windows xp através de programação

    
por 11.08.2017 / 00:17
1

Eu acidentalmente encontrei a solução sozinho. Como mencionado na questão eu tenho 2 scripts: 1º reside no computador local e 2 reside no Pen Drive. 1st (.bat) é pré-configurado para rodar no sistema inicialização ( Veja como atribuir scripts de inicialização do computador? ) e chama o segundo (.vbs) se o pen drive estiver conectado.

Como funciona:

O trabalho do 1º arquivo já está descrito em Question; e o trabalho do segundo script é muito simples, mas preenche minhas necessidades. Este script apenas envia toques na tela de login na mesma sequência que eu digito no teclado para o Login. Aqui eu gostaria de compartilhar o código inteiro de ambos os scripts. Espero que isso ajude muitos como eu, que não querem interferir nos arquivos internos do sistema operacional, como o GINA.

O código é:

1º script (script de logon)

Nome: "Find PD.bat"

Localização:

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

Código

@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º script:

Nome: "FillCred.vbs"

Localização:

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

Código:

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

Lembre-se:

1) Isso só é testado no Windows XP.

2) Isso só funcionará se o seu Windows mostrar a tela de logon padrão (também conhecida como 'Tela de boas-vindas')

3) Você precisa modificar o segundo script para suas sequências de teclas .

4) Isso não funcionará se o seu sistema precisar pressionar Ctrl + Alt + Delete antes do login.

5) Esta é uma solução muito básica, mas você pode avançar avançando editando o 2º Script. isso funcionará contanto que o sistema permita traços nas teclas na tela de login.

Obrigado.

    
por 19.08.2017 / 10:19