Inicio de sesión automático de Windows XP / Win-7 utilizando un archivo por lotes (o secuencia de comandos VB) almacenado en una memoria USB estándar

10

Por qué necesito esto :

Tengo Pen Drive lleno de secuencias de comandos por lotes y otras herramientas de diagnóstico. Tengo 75 PC independientes (no conectadas en red) principalmente con Win-XP-Pro SP-2, en 2 Labs. A menudo necesito iniciar sesión en cada PC con una cuenta de administrador para configurar o diagnosticar algo.

Entonces, cuando inicio una PC, cada vez que tengo que seleccionar manualmente el nombre de usuario de la pantalla de inicio de sesión y también escribir su contraseña.

Ahora quiero iniciar sesión en Admin Acc. Automáticamente (mediante programación) si mi pen drive está conectado a la PC.

Lo que yo sé:

Sé que es posible ejecutar Scripts (Batch Files) antes de que el usuario inicie sesión en XP / Win7. Escribí un archivo por lotes y lo guardé en la PC local. Lo configuré en la política de grupo para ejecutarlo en el inicio del sistema (Ubicación de GPO: Configuración del equipo \ Configuración de Windows \ Scripts (Inicio / Apagado) \ Sartup ). Este archivo por lotes detecta con éxito 'si el pen drive está conectado o no.

Tengo otro archivo por lotes (actualmente en blanco) almacenado en Pen Drive.

El primer archivo por lotes busca en todas las unidades de C a Z el segundo archivo por lotes (login.bat) utilizando un bucle; si el archivo está presente, se supone que el pen drive está presente y luego llama al segundo archivo por lotes (login.bat) para continuar.

Lo que no sé

Ahora no sé cuál debería ser el código del archivo login.bat o no sé cómo iniciar sesión pragmáticamente.

¿Cuáles son otras alternativas en mente?

No es necesario usar solo un archivo por lotes. También puedo considerar 'si tiene alguna otra opción para el inicio de sesión automático como usar VB Scripto cualquier otro ejecutable de tercera parte',

Editar:

De acuerdo con esta pregunta Establecer usuario para inicio de sesión automático en Windows mediante secuencia de comandos por lotes. Puedo crear una secuencia de comandos para modificar las entradas del registro y permitir el inicio de sesión automático. Aunque esto funciona, debe reiniciar su PC para que se apliquen los cambios. Que es algo que quiero evitar. Lleva más tiempo ejecutar el script y reiniciar que simplemente iniciar sesión personalmente.

Me gustaría poder iniciar sesión automáticamente, bajo demanda. Esto significa que una vez que conecto mi Pen Drive, el script debería poder iniciar sesión en la cuenta de administrador sin reiniciar la PC.

Leí en la web que se puede lograr creando un archivo dll GINA, pero no tengo experiencia en ese campo. ¿Alguna idea de cómo se puede implementar esto?

Ajaib Singh
fuente
@ DA: ¿cómo puede decir que es un duplicado de "Establecer usuario para inicio de sesión automático ..."? ¿Leíste la explicación completa de la pregunta? ¿Y sabe lo que significa "configurar un usuario para el inicio de sesión automático? Este no es el duplicado de uno especificado por usted. No quiero configurar un usuario para el inicio de sesión automático cada vez que encienda la PC. Esto habilitará el de usuario para iniciar sesión automáticamente sin tener en cuenta el Pen Drive está unido o no necesito un archivo por lotes o secuencia de comandos para iniciar el inicio de sesión 'Sólo si la unidad de pluma se une a la PC Lea la pregunta completa con cuidado...
Ajaib Singh
@DA Sir, leí cuidadosamente la respuesta especificada. Incluso internet está lleno con este tutorial. Primero 'no comprueba la presencia de Pen Drive para permitir condicionalmente el inicio de sesión automático. 2º 'Como resaltó la opción "Establecer cuántas veces debe iniciar sesión". No es adecuado para mi. Déjame explicarte por qué. Solo tengo 2 valores posibles que se pueden asignar a "Establecer cuántas veces debe iniciar sesión". 1st es 1 y 2nd es 'mayor que uno'
Ajaib Singh
Si lo configuro como 1: solo permitirá el inicio de sesión automático una vez. En las siguientes nuevas empresas 'tengo que ingresar el nombre de usuario y la contraseña. Si lo configuro mayor que 1 (digamos 10), iniciará sesión automáticamente el número especificado de veces. Ahora, hasta que caduque el número especificado de veces, cada usuario iniciará sesión en la cuenta de administrador de forma predeterminada. Lo cual no quiero. Mi requisito es: "Permitir un número infinito de inicios de sesión" siempre que mi pen drive esté conectado; de lo contrario, no permita el inicio de sesión automático.
Ajaib Singh
2
Preguntas: (1) ¿Tiene solo un inicio de sesión para todas las computadoras con el mismo usuario / contraseña? (2) ¿Puede instalar una solución de software (si existe) en todas las computadoras? (3) ¿Pagaría por un producto comercial?
harrymc

Respuestas:

2

Es posible iniciar sesión programáticamente en Windows, pero no con un simple archivo por lotes. En su lugar, debe crear una DLL con C ++ (o tal vez C #, pero no se recomienda ). En Windows XP (y antes), esta instalación se llama GINA .
(A partir de Vista, debe crear un proveedor de credenciales).

Referencia: Inicie sesión en Windows XP programáticamente

wp78de
fuente
Hola wp78de "; He resuelto mi problema con VB Script. Que solo envía claves en la pantalla de inicio de sesión, y mi cuenta de administrador se registra. Gracias por la respuesta.
Ajaib Singh
1

Accidentalmente encontré la solución por mí mismo. Como se mencionó en la pregunta, tengo 2 scripts: el primero reside en la computadora local y el segundo reside en Pen Drive. 1st (.bat) está preconfigurado para ejecutarse en el inicio del sistema ( ¿Ver cómo asignar scripts de inicio de la computadora? ) Y llama a 2nd (.vbs) si el pen drive está conectado.

Cómo funciona:

El funcionamiento del primer archivo ya se describe en la pregunta; y trabajar con el segundo script es muy simple pero satisface mis necesidades. Este script solo envía pulsaciones de teclas en la pantalla de inicio de sesión en la misma secuencia que escribo en el teclado para Iniciar sesión. Aquí me gustaría compartir el código completo de ambos scripts. Espero que esto ayude a muchos como yo, que no quieren interferir con los archivos internos del sistema operativo como GINA.

El codigo es:

1er guión (guión de inicio de sesión)

Nombre: "Find PD.bat"

Ubicación:

"%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

2do guión:

Nombre: "FillCred.vbs"

Ubicación:

"<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}"

Recuerda:

1) Esto solo se prueba en Windows XP.

2) Esto solo funcionará si su Windows muestra la pantalla de inicio de sesión predeterminada (también conocida como 'Pantalla de bienvenida')

3) Tienes que modificar el segundo script para tus secuencias de teclas.

4) Esto no funcionará si su sistema requiere presionar Ctrl + Alt + Delete antes de iniciar sesión.

5) Esta es una solución muy básica, pero puede hacerla avanzada editando la 2da secuencia de comandos. esto funcionará siempre que su sistema permita presionar teclas en la pantalla de inicio de sesión.

Gracias.

Ajaib Singh
fuente