miércoles, 13 de febrero de 2008

Cómo crear puntos de restauración automáticos en Windows XP

La característica de restauración del sistema System Restore de Windows XP permite a los administradores, en caso de problemas, restaurar sus equipos al estado en el que se encontraban previamente sin riesgo de perder archivos de datos personales (como documentos de Word, gráficos o mensajes de correo electrónico). La herramienta Restaurar Sistema supervisa activamente los cambios en los archivos del sistema y de las aplicaciones, para registrar o almacenar versiones previas antes de que dichos cambios se produzcan. Gracias a Restaurar Sistema no tenemos que preocuparnos por tomar instantáneas del sistema, ya que esta característica crea automáticamente puntos de restauración fácilmente identificables que nos permiten restaurar el sistema sin hallar problemas posteriores.

La herramienta Restaurar Sistema crea puntos de restauración de forma automática en el sistema cada vez que se producen eventos como los siguientes:

Instalación de aplicaciones (siempre que dichas aplicaciones utilicen un instalador actual compatible con RestorePT.API de System Restore).
Instalación de actualizaciones automáticas.
Instalación de actualizaciones del sistema.
Operaciones de restauración.
Recuperación de la utilidad de copia de seguridad de Microsoft.
Instalación de controladores no firmados.

Además, crea también un punto de restauración de forma automática cada 24 horas, independientemente de los eventos anteriores, siempre que el equipo se encuentre en funcionamiento, y sólo exclusivamente durante períodos de inactividad; por ejemplo, cuando el mouse, el teclado o el dispositivo de E/S del disco no estén activos.

Pero además de todo esto, nosotros también podemos crear puntos de restauración de forma manual siempre que queramos, ejecutando la herramienta Restaurar Sistema:

Inicio > ejecutar > %systemroot%\system32\restore\rstrui

o bien, accediendo al menú Inicio > Todos los programas > Accesorios > Herramientas del sistema > Restaurar sistema. Lo que muchos no saben es que también tenemos la posibilidad de crear puntos de restauración de forma automática, o sea, darle las órdenes al sistema para que los cree justo en el momento que nosotros le hayamos programado. De esta forma, nosotros también podemos crear nuestros propios puntos de restauración sin tener que ejecutar manualmente ningún programa, o si no estamos presentes en ese momento. Para programar los puntos de restauración, en este caso necesitamos tres elementos:
- un script especial para crear puntos de restauración automática
- el programa Microsoft Windows Based Script Host, que ejecutará el script
- el Programador de Tareas de Windows

Procederemos de la siguiente manera: primero creamos el script. Para este caso, utilizamos uno muy sencillo pero que nos va a servir perfectamente. Más adelante, veremos otro tipo de archivos de comandos, más elaborados, que también pueden sernos útiles en este proceso. Iniciamos el Bloc de notas (inicio > ejecutar > notepad) y copiamos el siguiente contenido:


Set IRP = getobject("winmgmts:\\.\root\default:Systemrestore")
MYRP = IRP.createrestorepoint ("Punto de Restauración automático", 0, 100)


Guardamos el archivo con el nombre restorepoint.vbs (con extensión VBS) en un lugar seguro (por ejemplo, en la carpeta RestorePoint que crearemos expresamente para este caso en el directorio raíz del disco (X:\RestorePoint). A continuación, ejecutamos el Programador de Tareas de Windows:

Inicio > ejecutar > control schedtasks

o bien, accediendo al menú Inicio > Todos los programas > Accesorios > Herramientas del sistema > Tareas Programadas. Pulsamos en Agregar tarea programada y se abrirá el Asistente que nos ayudará a programar la nueva tarea. Pulsamos en Siguiente, y cuando se haya cargado la lista de programas, pulsamos en Examinar. Debemos buscar el programa Microsoft Windows Based Script Host (wscript.exe) que se halla en la ruta siguiente:

X:\WINDOWS\system32\wscript.exe

(donde X es la unidad del sistema)

Seguidamente, escribiremos un nombre para la tarea, por ejemplo Creación de Puntos de Restauración y elegimos el tipo de programación (diaria, semanal, al inicio del sistema, etc.). En la siguiente pantalla concretamos ese tipo de programación, estableciendo los días y horas exactos en los que se crearán los puntos de restauración. La siguiente pantalla es muy importante y es donde debemos especificar el nombre de usuario y la contraseña de la cuenta. Si no escribimos estos datos correctamente, la tarea no se ejecutará (aunque en el SP2 de Windows XP se introduce una nueva opción en el Programador de Tareas por la cual no será necesario introducir la contraseña si la sesión de administrador está iniciada).

En la última pantalla, marcamos la casilla Abrir propiedades avanzadas de esta tarea cuando haga clic en Finalizar, y pulsamos en Finalizar.

Se nos abre ahora la ventana Creación de puntos de restauración. En la ficha Tarea, borramos lo que nos aparece en la casilla Ejecutar y colocamos todo este comando, tal cual:

X:\WINDOWS\system32\wscript.exe "X:\RestorePoint\restorepoint.vbs"

(sustituyendo, como es lógico, las X por la letra de unidad donde se halla el sistema) y respetando el espacio en blanco existente entre exe y ". Repasamos las fichas Programa y Configuración. En la primera podemos consultar la programación que hemos establecido, que podremos cambiar siempre que queramos. Antes de aplicar los cambios, volvemos a la ficha Tarea y pulsamos en Establecer contraseña, más que nada para asegurarnos que la tarea se ejecute sin problemas. Si queremos que los puntos de restauración sólo se creen si tenemos iniciada la sesión, marcamos la casilla Ejecutar sólo si se inicia sesión, en este caso ya no es necesario introducir la contraseña. Finalmente pulsamos Aplicar y Aceptar.

De este modo ha quedado finalizada la tarea. Los puntos de restauración se crearán de forma silenciosa y automática en la programación que hayamos establecido, incluso si la cuenta de usuario en ese momento no está iniciada (en este caso no debe estar marcada la casilla Ejecutar sólo si se inicia sesión y además debemos haber aplicado la contraseña). Los requisitos para que se lleve a cabo la tarea son:
- el sistema debe estar iniciado en una cuenta administrativa *
- si incluimos los datos de usuario y contraseña, éstos deben ser correctos **
- deben estar iniciados los siguientes servicios:

- Instrumental de Administración de Windows (WMI)
- Restauración del sistema
- Programador de Tareas ***

* si el sistema sólo está iniciado en una cuenta limitada, o en la cuenta de invitado, la tarea no se ejecutará.
** en caso contrario, tampoco se ejecutará la tarea.
*** el servicio Programador de Tareas crea un archivo de control llamado SchedLgU.txt en la carpeta %windir%, donde podemos consultar cómo se van llevando a cabo las tareas programadas y consultar los posibles errores y el estado de las tareas. Para acceder a este archivo de registro, pulsamos en Opciones avanzadas y en Ver registro. El servicio, como he dicho, debe estar iniciado; desde la consola de servicios locales (inicio > ejecutar > services.msc) buscamos el servicio Programador de tareas y comprobamos que el tipo de inicio es Automático, y el estado, Iniciado.

El Script que hemos empleado en este proceso es muy simple pero nos sirve perfectamente porque se ejecuta de forma silenciosa, sin mostrar avisos en pantalla. Si queremos, podemos sustituir este script por otro, algo más elaborado, como por ejemplo éste, cortesía de Doug Knox, el cual me he permitido traducir al español (espero no me regañe por esto):


'Unattended System Restore Point
'sysrestorepoint.vbs
'© Doug Knox - rev 02/11/2002
'Downloaded from www.dougknox.com
'Extracted from original code by Bill James - www.billsway.com

Set sr = getobject("winmgmts:\\.\root\default:Systemrestore")

msg = "Se ha creado un punto de restauración automático." & vbCR
msg = msg & "Fecha de creación: " & vbCR
msg = msg & "Punto de Restauración Automático " & Date & " " & Time

'Put a ' in front of the next five lines to disable the Success Failed Prompt.
If (sr.createrestorepoint("Punto de Restauración Automático", 0, 100)) = 0 Then
MsgBox msg
Else MsgBox "Ha Fallado el Punto de restauración!"
End If

'Remove the ' from the next 3 lines to only alert you if the process failed
'If (sr.createrestorepoint("Automatic Restore Point", 0, 100)) <> 0 Then
' MsgBox "Ha Fallado el Punto de Restauración!"'End If


Al crearse el punto de restauración automático, utilizando este script de Doug Knox, nos aparece una notificación en pantalla informándonos del hecho: Se ha creado un punto de restauración automático, y la hora exacta de creación.

Todos estos puntos de restauración, creados automáticamente, podemos consultarlos de una forma rápida en un archivo de texto si nos creamos un sencillo script mediante el cual obtendremos un listado completo de todos los puntos de restauración que se han creado hasta el momento, que incluso podemos imprimir. Las instrucciones para llevarlo a cabo las encontrareis en este artículo:

Crear un listado de todos los puntos de restauración


Información relacionada:

8 comentarios:

Anónimo dijo...

Cuando creo la tarea programada he de especificar una hora, p.ej: 7:30h de la mañana. Si el PC está apagado y lo enciendo a las 8h, la tarea no se ejecuta. Hay alguna forma de no poner la hora para que la tarea se ejecute al arrancar el pc o que si lo enciendo a las 8h, que se ejecuten las tareas pendientes?
Saludos

Enrique Cortés dijo...

No. No necesariamente debes especificar un hora exacta. Si te lees bien el artículo, verás que he dicho que puedes establecer la programación que desees para la cración de puntos de restauración.

Saludos.

Anónimo dijo...

Tienes razón. Había confundido la opción "Ejecuatar sólo si se inicia sesión" de la pestaña General, con la opción "Programar tarea al iniciar sesión" de la pestaña Programa.
Saludos, gracias y enhorabuena por tu blog

Anónimo dijo...

"Los requisitos para que se lleve a cabo la tarea son:
- el sistema debe estar iniciado en una cuenta administrativa (si el sistema sólo está iniciado en una cuenta limitada, o en la cuenta de invitado, la tarea no se ejecutará)"
Supongo que si pongo la contraseña del administrador, funcionará ¿no? pero debería desmarcar "Solo cuando inicie sesión" ¿sí o no?

Anónimo dijo...

Excelente, hace algun tiempo estaba buscando como hacer esto, te agradesco mucho muy bueno su blog saludos!!

Anónimo dijo...

Excelente, me sirvió para lo que dice. Sin embargo, el script grande no me funcionó, entonces lo cambié por el pequeño y funcionó perfecto. Cuando corrí el grande, decía "error en la línea 11 caracter 52".
Un comentario adicional. Una forma de probar el script es haciendo doble clic sobre el archivo restorepoint.vbs directamente, si hay algún error, brinca inmediatamente, si solo miras el relojito, es que funciona perfecto.

Enrique Cortés dijo...

Hola, Anónimo.

Había un pequeño fallo en el script grande, que acabo de solucionar. Pruébalo a ver si funciona bien: ya sabes, copiar y pegar. Vale la pena, ya que te da información sobre el punto de restauración creado.

FRANCISCO dijo...

hola enrique al momento de querer restaurar elsistema me sale este mensaje "restaurar sistema a sido desactivado por una directiva de grupo para activarlo pongase en contacto con su administrador de dominio" por que no me dejara restaurar por tu atencion gracias