Blog - Entry for Defkon1

2011/09/08

Estrarre DLL dalla GAC
Category: C#

Author: Defkon1 (10:01 am)
L'altro giorno, mentre preparavo un programmino C# .NET, per un motivo a me totalmente sconosciuto mi sono ritrovato con una DLL che uso spesso non più disponibile nella lista delle possibili referenze.

Da un rapido controllo, mi sono però accorto che tale DLL era ancora caricata in GAC, per cui mi sono avventurato nel magico mondo dell'estrazione di una libreria compilata dalla cache.

E ho trovato ben due metodi (ma solo il secondo ha funzionato per me).
Il primo metodo consiste nell'accedere da riga di comando alla cartella fisica della GAC, bypassando l'interfaccia speciale che Windows imposta per tale directory (normalmente C:\Windows\assembly).

Se accedete a tale percorso con Explorer vedrete infatti un'interfaccia un po' diversa dal solito, che riporta tutte le informazioni dettagliate delle DLL, ma che non permette le usuali operazioni di copia/sposta.

Per accedere alla riga di comando, premete Start > Esegui, scrivete cmd e date Invio.

A questo punto raggiungete il percorso della vostra DLL e tentate un xcopy brutale:

Quote:

cd \
cd Windows\assembly\GAC\<nome_dll>\<versione_dll-token>\
copy <nome_dll> c:\


Se non avrete messaggi di errore, vi ritroverete con la vostra DLL copiata in C:\.

Nel mio caso questa procedura non ha funzionato per un problema di permessi, ma ho avuto successo con questa seconda tecnica.

Aprite una console di riga di comando (il cmd di cui sopra) e scrivete quanto segue:

Quote:

regsvr32 /u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll


Questo comando serve a de-registrare la libreria shfusion.dll, che si occupa di fornire l'interfaccia alla cartella speciale della GAC. Disattivata questa interfaccia potete tranquillamente aprire la cartella come una qualsiasi altra directory e copiare quello che vi serve.

Quando avete finito ri-registrate la libreria, e siete a posto:

Quote:

regsvr32 /i C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll


Enjoy!
Read Defkon1's weBLog | Comments (0) | Trackback (0) | Reads (75204)
Trackback URL of this entry
http://www.alessiomarinelli.it/modules/weblog/weblog-tb.php/43
Printer Friendly Page Send this Blog to a Friend

Software programs are like humans. The difference is that when program stops responding you can always kill it with no regrets.

-Rustam M. Bunyadov

Categorie

C# (6)
Elettronica (1)
Eventi (3)
Generale (2)
Linux (9)
MySQL (1)
PHP (1)
Rassegna Stampa (1)
Vita in ufficio (4)
Web (2)
Wii (1)
Windows (2)
Xoops (8)

Hosting

Questo blog è generosamente ospitato da