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

10

Por que eu preciso disso :

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

Portanto, quando inicio um PC, sempre que preciso selecionar manualmente o nome de usuário na tela de login e também digitar sua senha.

Agora eu quero entrar no Admin Acc. Automaticamente (programaticamente) se meu pen drive estiver conectado ao PC.

O que eu sei:

Eu sei que é possível executar scripts (arquivos em lote) antes do login do usuário no XP / Win7. Eu escrevi um arquivo em lotes e salvei no PC local. Configurei-o 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 ). Este arquivo em lote detectou com êxito 'se o pen drive está conectado ou não.

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

O 1º arquivo em lote pesquisa em todas as unidades de C a Z pelo 2º arquivo em lote (login.bat) usando um loop, se o arquivo estiver presente, ele pressupõe que o pen drive esteja presente e depois chama o segundo arquivo em lote (login.bat) para continuar.

O que eu não sei:

Agora não sei qual deve ser o código do arquivo login.bat ou não sei 'como efetuar o login de forma pragmática.

Quais são as outras alternativas em mente:

Não é necessário usar apenas um arquivo em lotes. Também posso considerar 'se você tem alguma outra opção de login automático, como usar VB Scriptou qualquer outro executável de terceira parte',

Editar:

De acordo com esta 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 seu 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, depois que eu conectar o meu Pen Drive, o script poderá me conectar na conta de administrador sem reiniciar o PC.

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

Ajaib Singh
fonte
@ DA-Como você pode dizer que é duplicado de "Definir usuário para logon automático ...".? Você leu a explicação completa da pergunta? E você sabe o que significa "Definir um usuário para login automático. Esta não é a duplicata de um especificado por você. Não quero definir um usuário para login automático sempre que ligar o PC. Isso permitirá que o usuário faça login automaticamente, independentemente de o Pen Drive estar anexado ou não. Preciso de um arquivo em lotes ou arquivo vbscript para iniciar o logon 'Somente se meu pen drive estiver conectado ao PC. Leia a pergunta completa com atenção.
Ajaib Singh
@DA Sir Li atentamente a resposta especificada. Até a internet está cheia com este tutorial. 1º 'não verifica a presença do Pen Drive para permitir condicionalmente o Login automático. 2 'Como você destacou a opção "Definir quantas vezes deve fazer logon". Não é adequado para mim. Deixe-me explicar o porquê. Eu tenho apenas 2 valores possíveis que podem ser atribuídos a "Definir quantas vezes ele deve fazer logon". 1 é 1 e 2 é 'maior do que um'
Ajaib Singh
Se eu defini-lo como 1: Ele permitirá o login automático apenas uma vez. Nas próximas empresas iniciantes, preciso inserir o nome de usuário e a senha. Se eu configurá-lo maior que 1 (Say 10), ele fará login automaticamente o número especificado de vezes. Agora, até que o número especificado de vezes expire ', todos os usuários farão login na conta de administrador por padrão. O que eu não quero. Minha exigência é: "Permitir número infinito de logins", desde que meu pen drive esteja conectado, caso contrário, não permita o login automático.
Ajaib Singh
2
Perguntas: (1) Você possui apenas um logon para todos os computadores com o mesmo usuário / senha? (2) Você pode instalar uma solução de software (se existir) em todos os computadores? (3) Você pagaria por um produto comercial?
harrymc

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 GINA .
(A partir do Vista, você precisa criar um provedor de credenciais.)

Referência: Login no Windows XP programaticamente

wp78de
fonte
Oi wp78de ", eu ter resolvido o meu problema com VB Script que basta enviar Chaves na tela de login, e minha conta de administrador se loged em Obrigado pela resposta...
Ajaib Singh
1

Achei acidentalmente a solução sozinho. Como mencionado na pergunta, eu tenho 2 scripts: o 1º reside no computador local e o 2º reside no Pen Drive. O 1º (.bat) é pré-configurado para ser executado na inicialização do sistema ( Veja como atribuir scripts de inicialização do computador? ) E chama o 2º (.vbs) se o pen drive estiver conectado.

Como funciona:

O funcionamento do 1º arquivo já está descrito na pergunta; e o trabalho do 2º script é muito simples, mas atende às minhas necessidades. Este script apenas envia pressionamentos de tecla na tela de login na mesma sequência que digito no teclado para Login. Aqui eu gostaria de compartilhar todo o código dos dois scripts. Espero que isso ajude muitos como eu, que não querem interferir nos arquivos do sistema operacional interno, como a 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}"

Lembrar:

1) Isso é testado apenas no Windows XP.

2) Isso funcionará apenas se o 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 seqüências de teclas.

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

5) Essa é uma solução muito básica, mas você pode fazê-la avançar editando o 2º Script. isso funcionará enquanto o sistema permitir pressionamentos de teclas na tela de login.

Obrigado.

Ajaib Singh
fonte