Descubriendo el Misterio de la Carpeta WinSxs

Un tema que ha producido infinidad de preguntas y en general malas respuestas en Internet es la “misteriosa carpeta” WinSxs, que en muchos casos crece y crece y provoca mucha preocupación al que no la conoce

Antes de seguir leyendo ¡No la toque! ya veremos los motivos

Antes que nada aclaremos que WinSxs es una carpeta oculta que se hace visible únicamente cuando configuramos nuestro sistema para que nos muestre todos los archivos, inclusive los protegidos y del sistema

Todo comenzó con Windows Vista / Server 2008, y fue uno de los grandes avances que trajeron estos sistemas y que pasaron casi desapercibidos por otros motivos que no vamos a discutir acá ;-)

Uno de los adelantos de Windows Vista / Server 2008, fue la posibilidad de agregar componentes hardware y software sin que nos vuelva a pedir el DVD de instalación ¿o ya no recuerdan qué sucedía con los sistemas operativos anteriores?

Como magia no se puede hacer, toda la información necesaria para estos agregados tenía que estar en algún lado. Si están pensando en WinSxs están en lo cierto

Una de las primeras preguntas que surgen es, si cuando instalo un componente “se copia/expande” desde la carpeta WinSxs y por lo tanto eso está prodiciendo ocupación redundante del espacio ocupado en disco, la respuesta es un rotundo NO

La carpeta WinSxs en realidad contiene todo el sistema operativo, no sólo componentes que podemos agregar. El truco es en realidad algo llamado “hard links”

Muchos de los archivos que vemos dentro de la carpeta Windows en realidad no están ahí, son sólo punteros (“hard links”) a su correspondiente dentro de la carpeta WinSxS

Para que quede un poco más claro un “hard link” es en muchos aspectos similar a los “atajos” (shortcuts) que ponemos muchas veces en nuestro escritorio, pero en este caso a nivel de sistema de archivos.
Tanto para Windows Explorer como para la línea de comandos (CMD.EXE) son indistinguibles del archivo real, por lo cual debemos ayudarnos con comandos adicionales

Para el que le interese el tema le recomiendo el siguiente enlace, que además de información oficial de Microsoft creo que es muy interesante, y aunque trata sobre sistemas anteriores aún válido para Windows 8 / Server 2012
What is the WINSXS directory in Windows 2008 and Windows Vista and why is it so large? – Ask the Core Team – Site Home – TechNet Blogs

¿Será verdad? vamos a averiguarlo y constatarlo

Haré uso de un comando muy útil, recomiendo dedicarle un tiempo a la ayuda del mismo como es FSUTIL.EXE

Mediante el mismo apuntaré a un archivo (casi cualquiera) dentro de la carpeta Windows, y veré si es un “hard link” y dónde apunta

FSUTIL HARDLINK LIST C:\Windows\System32\acledit.dll

Y veremos que apunta al interior de WinSxS

Si miramos un poco dentro de la carpeta WinSxs podemos ver, poniendo un poco de “imaginación” que encontraremos drivers y componentes. Por ejemplo si hago una búsqueda con “IIS” obtengo

 

Hay también una pregunta importante más ¿por qué crece? son las actualizaciones

Cuando actualizamos el sistema se copian los nuevos archivos a la carpeta WinSxs y se corrigen los “hard links” a la nueva ubicación, pero no se eliminan los obsoletos. Esto es así para permitir la desinstalación de los mismos en caso de problemas

Hay algunos comentarios en Internet sobre cómo eliminar los reemplazados, pero no lo he probado, y realmente no lo recomiendo

El que quiera tomar el riesgo… y luego comentar :-)
dism /online /cleanup-image /StartComponentCleanup

 

De todas formas voy a ver una forma de disminuir el tamaño de la carpeta en cuestión, sin correr riesgos innecesarios.
Supongamos que tenemos una instalación de Windows Server 2012, ya configurada y que sabemos que no le agregaremos otros componentes (Roles o Features) podríamos eliminar los binarios correspondientes

Aclaro que no es un caso sin retorno, eventualmente que quisiéramos instalar un componente eliminado debemos recuperarlo desde el DVD como hemos mostrado en otras notas sobre la versión Core

Comencemos en PowerShell ejecutando:
Get-WindowsFeature

La salida de este comando nos mostrará las tres posibilidades de cada componente:

  • Installed: instalado y funcionando
  • Available: no instalado pero disponible para instalar
  • Removed: quitado. Si quisiéramos agregarlo debemos recurrir a una fuente externa

 

Observemos primero el tamaño de WinSxs

 

Ahora en PowerShell ejecutemos:
Get-WindowsFeature | where-object{$_.Installed -eq 0 -and $_.InstallState -eq ‘Available’} |
Uninstall-WindowsFeature -Remove

 

Trabajando…

 

Y el tamaño de la carpeta WinSxS ahora es

 

No es demasiado pero hemos reducido 1,82GB el tamaño de la misma. Aclaro que estoy haciendo estas medidas sobre una instalación de Windows Server 2012 con interfaz gráfica pero sin agregar componentes

Si quisieramos instalar un componente removido de la instalación debemos montar el DVD correspondiente, y ver el índice correspondiente a nuestra versión, usando

DISM /Get-ImageInfo
/ImageFile:D:\Sources\Install.wim

Y con el número obtenido adecuado (X) reemplazarlo en el siguiente comando, y por supuesto el nombre del componente

Install-WindowsFeature <NombreDelFeature> -source WIM:D:\Sources\Install.wim:X -Restart

Espero les sirva, creo que es más curiosidad que otra cosa, pero cuando más sepamos, mejor :-)

 

Anuncios
Post a comment or leave a trackback: Trackback URL.

Comentarios

  • marcoalexioMarco  On 04/04/2013 at 07:00

    ¿Se podría hacer lo mismo para una instalacion de W2008 Standard R2?

    • Delprato  On 05/04/2013 at 09:23

      En W2008 R2 también está la carpeta WinSxS, lo que no sé si se utilizan los mismos comandos de PowerShell o si el DISM está actualizado
      Es cuestión de probar, si los comandos no fueran reconocidos no producen daño, y habría que buscar los equivalentes

  • Electronic  On 29/09/2013 at 14:47

    No soló aparece en vista, 7 y 8, en xp y 2k3 también, ya que estos SO han tomado parte de código NT-6, p.j, doble pila de controladores es decir, la antigua de NT5(WIN-2K) y la actual de NT6

    • Guillermo Delprato  On 29/09/2013 at 15:29

      Por eso puse en la nota “comenzó con Vista”, por lo tanto abarca los posteriores
      En XP / Windows Server 2003 y anteriores, estaba la carpeta WinSxS pero no tenía la misma funcionalidad. Si recuerdas, cuando por ejemplo en Windows Server 2003 / XP queríamos agregar un componente, había que introducir del CD del producto, o redirigirlo a una carpeta donde estuvieran los instaladores para que los descomprima e instale

      Los “NTs” que no se llamaron más “NT” comenzaron con Windows 2000. Que hasta la versión Beta 2 o 3 se llamaba “Windows NT 5.0”
      Los otros Windows llegaron hasta el “hijo no reconocido” :-D (Windows Millenium)

  • Electronic  On 30/09/2013 at 13:14

    Exactamentete, no es igual la funcionalidad.
    Un cordial saludo amigo…;)

  • Zarakaiser  On 31/03/2014 at 20:53

    Por qué Avast no puede acceder a algunos archivos de esta carpeta, como por ejemplo los que acaban en un aborxpe.com ¿? Me estresa mucho no conocer qué son y que Avast no pueda acceder a ellos… No entiendo mucho de informática, pero esta carpeta puede contener archivos dañados o virus que perjudiquen al ordenador?

Trackbacks

Este espacio es para comentarios sobre la nota. No es un sitio de soporte

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: