Cómo realizar un script/aplicación de consola en Delphi que se ejecutará cada vez que un usuario inicie sesión en nuestros servidores de Terminal Server. Realizará determinadas tareas de mantenimiento (modificación fichero ini, copiar ficheros, identificación servidor y cliente que inicia sesión).

Windows 2000 / 2003 puede configurarse como servidor de terminales (Terminal Server). De esta forma sólo tendremos que instalar las aplicaciones de nuestra organización en los servidores de Terminal Server de que dispongamos. No será necesario instalar aplicaciones en los clientes, con los problemas de actualización y mantenimiento que supondría. Cada cliente se conectará al servidor y tendrá su propio escritorio, con los accesos directos a las aplicaciones que deseemos.

Si desea ver un manual sobre cómo instalar y configurar Terminal Server en Windows 2003 pulse aquí.

Cuando una organización tiene varios servidores de Terminal Server las tareas de mantenimiento se pueden complicar si se realizan de forma manual. Para ayudar a automatizar estas tareas podremos utilizar «script» de inicio de sesión. Se trata de miniaplicaciones que se ejecutarán cada vez que un usuario inicie sesión en el servidor de Terminal Server.

En este manual os explicamos con ejemplos y código fuente en Delphi y Visual Basic Script (VBScript) cómo realizar una miniaplicación que realiza las siguientes tareas de mantenimiento:

  • Comprueba si existen determinadas carpetas, si no existen las crea en el perfil del usuario que inicia sesión en Terminal Server. Estas carpetas son necesarias para la aplicación de Facturación de nuestra empresa.
  • Escribe un valor en una clave de un fichero .ini de una aplicación, en concreto escribe la ruta del perfil del usuario que inicia sesión en Terminal Server. Este dato es necesario para la aplicación de Contabilidad de la organización.
  • Copia ficheros de una ubicación a la carpeta «Windows» del perfil del usuario que inicia la sesión de Terminal Server. Estos ficheros son necesarios para el correcto inicio de la aplicación de Gestión de nuestra organización.
  • Guarda en un fichero .ini de información los datos del usuario que inicia sesión en Terminal Server: nombre de usuario, nombre del servidor de Terminal Server, nombre del equipo cliente del usuario, fecha y hora de inicio de sesión, número de conexiones que ha realizado el usuario. Esta información es muy útil para empresas que tengan varios servidores de Terminal Server. A veces, para realizar control remoto a un usuario (o cualquier otra tarea), hay que saber en qué servidor ha iniciado sesión un usuario. Con este script esa información se guardará en un fichero .ini de nuestra red, accesible para consulta de estos datos.

Para crear el script hemos utilizado Delphi 6, realizando una aplicación de consola. Para ello abriremos Delphi, menú «File» – «New» – «Other»:

En la ventana «New Items» seleccionaremos «Console Application» y pulsaremos «OK»:

El código fuente completo en Delphi sería el que a continuación os mostramos:

Compilando el código Delphi anterior (Menú «Run» – «Run») nos creará un fichero .exe llamado inicioSesion.exe, con el tamaño de 363 KB, que copiaremos a una carpeta de nuestra red que esté compartida y a la que todos los usuarios tengan, al menos, permisos de lectura. En nuestro caso, puesto que tenemos varios servidores de Terminal Server y tenemos un servidor como Controlador de Dominio (que incluye el catálogo global), que no tiene los servicios de Terminal Server (tal y como recomienda Microsoft), copiaremos esta aplicación a la ruta:

//servidor_controlador/netlogon/script

Hemos dado permisos de lectura a todos los usuarios para la carpeta «script» del servidor «servidor_controlador».

Ahora crearemos un sencillo fichero de VBScript que ejecutará la aplicación creada en Delphi, con el siguiente contenido:

Copiaremos el código anterior en un fichero que guardaremos con extensión .vbs:

El script lo podríamos poner para que se ejecute para todos los usuarios o sólo para usuarios determinados. Si queremos que se ejecute para todos los usuarios accederemos a todos los servidores de Terminal Server y crearemos un acceso directo al script VB (VBScript) anterior en la carpeta:

C:/Documents and Settings/All User/Menú Inicio/Programas/Inicio

Si queremos que se ejecute sólo para determinados usuarios colocaremos el acceso directo en la carpeta «Inicio» de cada usuario:

C:/Documents and Settings/Fernando Alonso/Menú Inicio/Programas/Inicio

De esta forma el script se ejecutará cada vez de todos o los usuarios seleccionados inicien sesión en el servidor de Terminal Server.

Es posible que cuando se inicie sesión aparezca la ventana de confirmación de documento sin firmar. Para quitar este mensaje podéis seguir estos pasos:

En estos casos puedes usar la directiva de grupo (se aplicará a todos los usuarios que inicien sesión en el servidor donde la apliques). Para ello sigue los siguientes pasos:

1. Con un usuario administrador, en el equipo en el que quieras quitar el aviso de seguridad de fabricante desconocido, accede al editor de directivas de grupo desde «Inicio» – «Ejecutar», escribe «gpedit.msc» y pulsa «Aceptar».

2. En el Editor de objetos de directiva de grupo despliega «Configuración de usuario» – «Plantillas administrativas» – «Componentes de Windows» – «Administrador de datos adjuntos», en la parte derecha busca la directiva «Lista de inclusión de tipos de archivos de bajo riesgo», haz doble clic sobre ella para editarla.

3. En la directiva marca «Habilitada» y especifica las extensiones para las que no se mostrará la advertencia de seguridad (si son varias sepáralas con punto y coma), en tu caso escribe «.exe;.vbs».

También aparecerá durante uno o dos segundos una ventana de MS-DOS (del script creado en Delphi).

Si iniciáramos sesión con un usuario llamado «fernando.alonso», el script realizará las siguientes tareas automáticamente:

  • Creará la carpeta: C:/Documents and Settings/fernando.alonso/Mis documentos.
  • Creará la carepta: C:/Documents and Settings/fernando.alonso/Mis documentos/TEMPFAC.
  • Escribirá en el fichero C:/Documents and Settings/fernando.alonso/WINDOWS/configuracion.ini, en la clave «Temporal», «Ruta», el valor C:/Documents and Settings/fernando.alonso/Mis documentos/TEMPFAC.
  • Copiará el fichero C:/gestion/bin/conf.bak al destino C:/Documents and Settings/fernando.alonso/WINDOWS/conf.ini.
  • Copiará el fichero C:/gestion/bin/conf00.bak al destino C:/Documents and Settings/fernando.alonso/WINDOWS/conf00.ini.
  • Guardará los siguientes valores en el documento //servidor/datos/info.ini:
    • [fernando.alonso]
    • Servidor=SERVIDOR1
    • Equipo cliente=PC001
    • Hora Inicio sesión=26/05/2007 11:19:01
    • Nº Conexiones=8

Esta aplicación y el código fuente está disponible de forma totalmente gratuita (freeware) en nuestra web. Para descargarla deberá ser usuario registrado, si aún no lo es pulse aquí para registrarse:

La aplicación que complementa al script anterior: AjpdSoft Información Usuarios Terminal Server

ANEXO

Contenido de ejemplo del fichero info.ini (guarda los datos de inicio de sesión de los usuarios):