Come annullo la registrazione delle DLL COM inizialmente aggiunte con RegSvr32 quando/u arg non funziona?


13

Destra, inizialmente ha funzionato:

c:\regsvr32 Amazing.dll 

poi, (per caso - mi permetto di aggiungere) Devo aver eseguito di nuovo, e (anzi) di nuovo quando sono stati rilasciati nuove versioni 'Amazing.dll'. Sì - So ora avrei dovuto correre:

c:\regsvr32 /u Amazing.dll 

in anticipo - ma hey! Ho dimenticato.

Per tagliare all'inseguimento, quando si aggiunge il riferimento COM in VS, è possibile vedere 3 istanze di "Amazing" che puntano tutte alla stessa posizione (c: \ Amazing.dll), che esegue regsvr32 /u rimuove uno dei riferimenti, la seconda volta - non fa nulla ...

Come faccio a eliminare questi riferimenti? Sto guardando uno scenario regedit? - In caso affermativo - cosa succede esattamente se cancello una delle chiavi ???

Acclamazioni

14

Il GUID dell'oggetto non deve essere modificato. In altre parole, una volta registrato l'oggetto COM, la registrazione non dovrebbe aggiungere altro al registro.

A meno che non siano state aggiunte ulteriori interfacce o oggetti COM al progetto.

In ogni caso, se si tratta di un accordo di una volta (e sembra così), aprire regedit ed eliminare manualmente le chiavi non necessarie.


0

mi sono entrato in un pasticcio orribile con COM prima. Ho dovuto scegliere il mio modo, anche se il registro cancellava ogni riferimento, sfortunatamente.


4

C'è uno strumento di MS che sta ancora fluttuando ed è stato da Win95 giorni che analizza il registro e fa cose come trova chiavi COM che non puntano più a un file valido ecc. Chiamato RegClean (l'ho trovato qui: http://downloads.zdnet.com/abstract.aspx?assetid=881470&node=2094), che ho visto in alcuni punti che si stanno ancora utilizzando in particolare quando si scherza con roba COM legacy in VB che genera nuovi GUID COM dopo ogni generazione.

Quindi se l'hai ottenuto, quindi non è stato cancellato e cancellato o spostato il file, esegui l'app e pulirà le voci "orfane".

Se si decide di rimuovere le chiavi utilizzando RegEdit, potrebbe essere necessario rimuovere gli ID classe e le voci guid.