domingo, julio 06, 2008

¿Por qué el proceso Explorer.exe analiza periódicamente todas y cada una de las unidades del sistema?

Un usuario consultaba lo siguiente:

Cuando tengo Process Monitor analizando un sistema "en reposo", sin hacer nada en él, cada cierto tiempo veo que se registran eventos del proceso Explorer.exe accediendo a todas y cada una de las unidades de mi sistema. ¿Por qué ocurre eso?

Es muy probable que lo que esté observando el usuario es el chequeo que realiza Windows cada minuto con el objetivo de comprobar si alguna unidad está quedándose sin espacio libre y mostrar el pertinente globo informativo que enlaza con la herramienta Liberador de espacio en disco.

Durante la inicialización del proceso Explorer.exe (tema que será tratado en profundidad en un próximo artículo), en concreto durante la creación de la barra de tareas, se genera un temporizador para que, cada minuto, se lance un hilo encargado de verificar si la alguna de las unidades presentes en el sistema se está quedando sin espacio. Como para calcular el espacio libre en disco se debe abrir un manejador hacia dicho volumen, Process Monitor refleja este hecho.

Por supuesto, es posible añadir una política que desactive por completo la comprobación periódica de espacio disponible en disco. En concreto, la clave de registro implicada es HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ó HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer, valor "NoLowDiskSpaceChecks" con contenido 1.

Si está interesado en generar temporizadores, puede usar por ejemplo la función SetTimer tal y como describe el sitio web de MSDN.

7 comentarios:

Anónimo dijo...

Que solución más mala la de MS. No estoy completamente seguro si es verdad lo que dices, en que archivo debería estar "NoLowDiskSpaceChecks" como String? No lo encontré dentro de explorer.exe

Daniel Martín dijo...

Es una clave de Registro. Tienes un script que automatiza todo el proceso en http://www.fermu.com/component/option,com_remository/Itemid,30/func,fileinfo/id,63/lang,es/.

Daniel Martín dijo...

Por cierto, la cadena la puedes encontrar en Shell32.dll, no en Explorer.exe:

Strings %windir%\system
32\shell32.dll | findstr /i NoLowDiskSpaceChecks

Anónimo dijo...
Este comentario ha sido eliminado por un administrador del blog.
Anónimo dijo...
Este comentario ha sido eliminado por un administrador del blog.
Adoyma dijo...

Daniel, encontre tu blog a traves de la pagina:
http://www.newsgrupos.com/microsoft-public-es-windowsxp-seguridad/211872-problema-windows-defender.html

Tengo un "incidente puntual" con Windows Defender, me da el error 0x800106bc.

Mi portatil es sistema operativo Vista, y aunque llevo mas de 8 horas buscando y rebuscando no soy capaz de encontrar la solucion.(que torpe soy..coño)

Me puedes enseñar a reparar el incidente?
Cordial saludo.
Adoyma

Unknown dijo...

Alguien cuenta con un estandar que describa los puntos importantes a considerar en una restauracion de sistemas