Cómo mostrar el directorio assembly en Windows
Caché global de ensamblados desde el explorador de Windows.
Hace unos días, estuve leyendo un artículo muy interesante en inglés, sobre el tema de la creación de Imágenes nativas a partir de ejecutables en .NET con ngen.exe (generador de imágenes nativas). Ciertamente, es un tema que me llamó muchísimo la atención y mi interés vino porque si, en teoría, podemos crear un ejecutable nativo a partir de un ejecutable .NET, mi pregunta era:
¿Será posible depurar y ejecutar esa aplicación nativa que acabamos de generar, por ejemplo, con OllyDBG? Seguro que tendrás ganas de conocer esta respuesta, que a mi me quedó un tanto respondida en el tutorial del que hablo más arriba y tengo intención de comentarlo más adelante. Pero antes de seguir (o comenzar a hablar de ello) es necesario acceder al directorio assembly que es donde se guardan todos estos ensamblados que comparten las aplicaciones y así haré referencia a este artículo más adelante.
A partir de la versión 4 de .NET Framework, la ubicación predeterminada de la Caché Global de Ensamblados es %windir%\Microsoft.NET\assembly, mientras que en versiones anteriores de .NET Framework, la ubicación predeterminada es %windir%\assembly. Sin embargo, si accedes al segundo de ellos desde el explorador de Windows, verás que no es un directorio ordinario:
Desde la línea de comandos, como administrador, puedes también navegar por este directorio assembly.
Mostrar el directorio
Modificando el registro de Windows
Puedes mostrar el directorio assembly, editando el registro de Windows. Accede a:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
Y allí crea una nueva clave DWORD:
- Nombre del valor: DisableCacheViewer
- Datos: 1
Como puedes ver en esta captura:
Ahora ya puedes refrescar de nuevo el directorio assembly:
Otras formas
He testeado otras maneras de hacerlo comentadas en varios foros, pero no me han funcionado, crean restricciones o son para versiones de .NET Framework menores de 4. Una de ellas es renombrar el archivo Shfusion.dll que está ubicado en el directorio %windir%\Microsoft.NET\Framework\vx.x.xxxx, donde xxxx es la versión del NET Framework que estés usando.