¿Cómo automatizar la eliminación de temporales de Internet Explorer?

Una forma sencilla de eliminar temporales en Internet Explorer consiste en abrir el menú Herramientas, Opciones de Internet y hacer clic sobre el botón Eliminar del apartado Historial de exploración. Sin embargo, a casi todo el mundo nos gusta automatizar ciertas tareas, y algo como eliminar la cache de navegación se realiza asiduamente así que bastante beneficio podríamos obtener si logramos automatizarla en la forma de un script o algo similar.

En Internet circulan scripts que eliminan temporales de Internet similares al siguiente:

rem Eliminar Archivos temporales de Internet
start RunDll32 InetCpl.cpl,ClearMyTracksByProcess 8
@exit

Pese a que el script funciona correctamente, hay que tener en cuenta que en Windows Vista y Windows 7 está accediendo y borrando ficheros que tienen un nivel de integridad bajo (los temporales creados por IE con modo protegido activado) desde un proceso con un nivel de integridad medio (por defecto en Windows 7 y Windows Vista).

Una posible mejora consiste en crear un nuevo proceso que tenga un nivel de integridad bajo y ejecutar el comando RunDll32 InetCpl.cpl,ClearMyTracksByProcess en él. Para ejemplizar mi solución, he creado una pequeña utilidad que hace esto mismo. La puede descargar desde aquí. La herramienta admite una serie de parámetros de configuración para eliminar todo, solo temporales (-t), solo historial (-h), solo cookies (-c), o sin mostrar interfaz de usuario (-q). Básicamente el algoritmo que he seguido es: Duplicar el manejador del proceso que ejecuta la aplicación, usar la API SetTokenInformation para rebajar el nivel de integridad a “bajo” y finalmente usar CreateProcessAsUser para crear un nuevo proceso con este nuevo token de seguridad. Este proceso ejecuta el comando RunDll32 InetCpl.cpl,ClearMyTracksByProcess normalmente.

Como se hace uso de una función implementada en el sistema operativo, personalmente prefiero esta solución a eliminar manualmente los directorios de temporales. Eliminar temporales no es solamente limpiar una carpeta y es bueno que el equipo de producto de Microsoft nos abstraiga de esta tarea mediante una función. A pesar de todo, no podemos contar con que esta función siga en versiones sucesivas de Internet Explorer.

Para concluir, comprobamos en Process Explorer cómo mi herramienta ha creado dos procesos que ejecutan el comando de limpieza, uno con nivel de integridad bajo y otro con nivel de integridad medio, cada una ocupándose de su correspondiente caché:

Rundll

¿Cuáles son los posibles flags de la función ClearMyTracksByProcess?

Ya tenemos una solución, ahora bien, es posible que necesitemos hacer uso de la función ClearMyTracksByProcess en algún otro momento, así que vendría bien tener a modo de referencia los posibles flags que se le pueden pasar. Según mis pruebas, esta es una lista más o menos detallada:

  • Historial: 1
  • Cookies: 2
  • Temporales de Internet: 4
  • Temporales incluyendo favoritos offline: 8
  • Formularios: 16
  • Contraseñas: 32
  • Filtro de phising: 64
  • Ejecutar sin ventana de progreso: 256

Los valores se pueden combinar mediante una simple OR. En una próxima actualización de mi herramienta iré incluyendo mejoras en la granularidad de limpieza.

3 thoughts on “¿Cómo automatizar la eliminación de temporales de Internet Explorer?

  1. Hola Martín,
    Muchas gracias por su valiosa utilidad. He estado buscando un soultion para borrar el historial de Internet Explorer (versión 7,8) con la interfaz de usuario de la ventana emergente que se oculta (por favor, espere mientras que el historial se borra) durante mucho tiempo y no pude encontrar ninguna, excepto la suya, finalmente . Yo uso RunDll32.exe inetcpl.cpl ClearMyTracksByProcess y yo tenía muchas ganas de ocultar la interfaz de usuario.

    Gracias de nuevo.

    Saludos cordiales,
    Flavio Borgia

Leave a Reply

Your email address will not be published. Required fields are marked *