¿Cómo puedo ejecutar automáticamente un script cuando inicio sesión en Windows?
Me gustaría ejecutar algo así cada vez que inicio sesión en mi computadora:
echo %USERNAME% logged on at %DATE% %TIME% >> log.txt
Un bono sería poder ejecutar el mismo script siempre que desbloquee el protector de pantalla también.
Puede crear una tarea programada que se ejecutará cuando su computadora esté desbloqueada:
Además, he ajustado la ruta en el script para leer
echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
Si ya tienes un script:
Para asignar un script de inicio de sesión a un usuario o grupo
¿Dónde? Herramientas del sistema/Usuarios y grupos locales/Usuarios
Si no, aquí hay un práctico "HowTo" de Microsoft
Creando scripts de inicio de sesión
Puede usar los scripts de inicio de sesión para asignar tareas que se realizarán cuando un usuario inicie sesión en un equipo en particular. Los scripts pueden ejecutar comandos del sistema operativo, establecer variables de entorno del sistema y llamar a otros scripts o programas ejecutables. La familia de Windows Server 2003 admite dos entornos de secuencias de comandos: el procesador de comandos ejecuta archivos que contienen comandos de lenguaje por lotes y Windows Script Host (WSH) ejecuta archivos que contienen Microsoft Visual Basic Scripting Edition (VBScript) o comandos Jscript. Puede utilizar un editor de texto para crear secuencias de comandos de inicio de sesión. Algunas tareas comúnmente realizadas por los scripts de inicio de sesión incluyen:
Asigna la unidad H: al directorio de inicio del usuario llamando al método MapNetworkDrive del objeto de la red WSH en combinación con la propiedad UserName del objeto de la red WSH. Utiliza el objeto ADSI IADsADSystemInfo para obtener el nombre distinguido del usuario actual, que a su vez se usa para conectarse al objeto de usuario correspondiente en Active Directory. Una vez que se establece la conexión, la lista de grupos de los que el usuario es miembro se recupera utilizando el atributo memberOf del usuario. La lista multivalor de nombres de grupos se une en una sola cadena mediante el uso de la función Unir de VBScript para facilitar la búsqueda de nombres de grupos objetivo.
Si el usuario actual es miembro de uno de los tres grupos definidos en la parte superior de la secuencia de comandos, la secuencia de comandos asigna la unidad G: del usuario a la unidad compartida de grupo y configura la impresora predeterminada del usuario como impresora de grupo. Para crear un ejemplo de script de inicio de sesión
Copie y pegue, o escriba, lo siguiente:
Const ENGINEERING_GROUP = "cn=engineering"
Const FINANCE_GROUP = "cn=finance"
Const HUMAN_RESOURCES_GROUP = "cn=human resources"
Set wshNetwork = CreateObject("WScript.Network")
wshNetwork.MapNetworkDrive "h:",
"\\FileServer\Users\" & wshNetwork.UserName
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" &
ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))
If InStr(strGroups, ENGINEERING_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Engineering\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\EngLaser"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\Plotter"
wshNetWork.SetDefaultPrinter
"\\PrintServer\EngLaser"
ElseIf InStr(strGroups, FINANCE_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Finance\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\FinLaser"
wshNetWork.SetDefaultPrinter
"\\PrintServer\FinLaser"
ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Human Resources\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\HrLaser"
wshNetWork.SetDefaultPrinter
"\\PrintServer\HrLaser"
End If
En el menú Archivo, haga clic en Guardar como.
La forma más sencilla en que puedo pensar sería poner esto en un archivo .bat en su carpeta de inicio.
Una forma más complicada sería agregar el archivo por lotes al registro en el
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
clave de registro.
¡No hay necesidad! Windows ya tiene un mecanismo para registrar esto para usted en el registro de eventos. El ID de evento es 4624 (528 en sistemas pre-Vista).
¿Alguien sabe si esto se puede usar para ejecutar cuando la pantalla también está bloqueada/desbloqueada?
Hay una manera para Windows 7 y/o Windows Server 2008.
Use el Programador de tareas, cree una nueva tarea básica, ya que el Desencadenador usa "Cuando inicio sesión".
Un buen método alternativo es crear un archivo por lotes con los comandos que desea ejecutar en ellos. A continuación, especificará en el editor de políticas de la máquina que ejecuta un script de inicio de sesión como parte del proceso de inicio de sesión. Una nota rápida es que esta opción solo está disponible en XP Pro y no en la versión doméstica.