Script de Inicio de Sesión en VBScript

Usar VBScript para hacer scripts de inicio de sesión es mucho más potente que ejecutar archivos .bat con comandos de DOS. Para asignar estos scripts a los usuarios lo podemos hacer de varias maneras, en función de si son W2000 o posteriores, o si tenemos equipos con NT4 y Windows 9x en nuestro dominio.


En Usuarios y Equipos de AD podemos editar las propiedades de cada usuario, y en su perfil le podemos especificar un archivo de inicio de sesión, que habremos colocado previamente en el recurso NETLOGON de un DC. Este archivo se le ejecutará siempre que inicie sesión. Sin embargo, hemos de tener en cuenta que los equipos previos a Windows 2000 no pueden ejecutar directamente archivos con extensión .vbs, por lo que si tenemos este tipo de equipos lo que hemos de hacer es poner como script de inicio de sesión un archivo .bat, que también colocaremos en el NETLOGON, y que contendrá una linea como la siguiente para lanzar el .vbs


WSCRIPT %0\..\miscript.vbs


También podemos aprovechar ese archivo bat para ejecutar comandos DOS, como para sincronizar de forma sencilla la hora con un DC. Esto en W2000 no es necesario, pero los Windows 98 no se sincronizan automáticamente con el dominio, por lo que nos vendrá bien. Podemos hacerlo con la siguiente linea, que en los W2000 en que no inicie sesión un administrador no se ejecutará, aunque tampoco parará el script.


NET TIME \\SERVIDOR /SET /YES


El archivo .vbs nos va a permitir hacer muchas cosas, y personalizar el script según nuestras necesidades, pero lo más básico que haremos con él es conectar unidades de red en nuestro equipo asignándoles letras de unidad. Un  ejemplo de código para empezar que pondríamos en el archivo miscript.vbs que lanza el .bat sería como sigue


‘**********************************************
Option Explicit
Dim oNet, sUser, startTime


On Error Resume Next


‘ Objeto Red
Set oNet = CreateObject(“WScript.Network”)


‘ Obtenemos el login de usuario. En Windows 9x, el usuario puede no estar todavía autentificado
‘ cuando el script comienza a ejecutarse; En ese caso reitera cada 1/2 segundo
sUser = oNet.UserName          ‘En minúsculas


startTime = Now
Do While sUser = “”
   If DateDiff(“s”, startTime, Now) > 600 Then Wscript.Quit
   Wscript.Sleep 500
   sUser = oNet.UserName
Loop


‘ Mapeado de la unidad F particular de cada usuario


oNet.RemoveNetworkDrive “U:”
oNet.MapNetworkDrive “U:”, “\\servidor\usuarios\” & sUser


oNet.RemoveNetworkDrive “X:”
oNet.MapNetworkDrive “X:”, “\\servidor\comunes\” 


‘**********************************************


Notar que en los equipos con Windows 2000 o superior es necesario eliminar el mapeo de la unidad antes de volver a asignarla, pues si no lo ignora y deja la asignación anterior que hubiese con esa letra.


Por fin, si no tenemos equipos con Windows 9x o NT4 podemos especificar directamente el archivo .vbs com oscript de inicio de sesión, y también podemos asignar este tipo de archivos mediante GPO (configuración de usuario – secuencia de comandos: inicio de sesión / cierre de sesión), procedimiento por el que podemos asignar más de un script. 

Añadir “Block de Notas” al menú contextual

Es muy cómodo que al pinchar con el botón derecho del ratón sobre cualquier archivo nos aparezca una opción que lo edite automáticamente con el block de notas. Para ello no hay más que añadir un valor al registro, por ejemplo creando un archivo con extensión .reg con el siguiente contenido y combinándolo con el registro.


 


Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\*\shell]


[HKEY_CLASSES_ROOT\*\shell\Block_Notas]


[HKEY_CLASSES_ROOT\*\shell\Block_Notas\command]
@=”notepad.exe %1″