Pergunta

Eu tenho um dll que está registrado para interoperabilidade, assim sob HKLM \ Software \ Classes \ CLSID [minha guid] \ InprocServer32 [minha versão no] \ Codebase tem o caminho da dll registrado. No entanto, eu reorganizadas minha estrutura de pastas para que esse caminho não é mais correto. Existe uma maneira de cancelar o registro de que dll sem colocá-lo de volta, em seguida, cancelar o registro, em seguida, remover o arquivo novamente?

E se eu não tenho esse dll mais, ou só têm um com um número de versão diferente?

Foi útil?

Solução

números de versão diferente (em geral) não importa. Enquanto o mais recente DLL contém todas as GUIDs que aparecem na versão mais antiga, ele será não registrado corretamente (usando o novo com regasm, exe). E, claro, registrando novamente o assembly para interoperabilidade será adequadamente a mudar de chaves de registro necessárias.

Outras dicas

Tanto quanto eu sei - tudo que você precisa é registrar o DLL em sua nova localização
. Você pode usar a ferramenta MS Oleview.exe para verificar os pontos de registro cOM para o local correto.

O problema que encontramos com apenas registrar o novo dll é quando ele tem uma versão inferior ao que anteriormente registado. Você acaba com esta no registo:

HKCR\MyLib.MyClass\CLSID:(Default)=<my guid>

and 

HKCR\CLSID\<my guid>:Assembly=<string containing version number> 

and 

HKCR\CLSID\<my guid>\InprocServer32\<version number>\ ... more details

Eu acho que o tempo de execução vai tentar carregar o assembly identificado em HKCR\CLSID\<my guid>:Assembly, assim que você quer tentar cancelar o registro de que um, se possível.

Esta não é uma resposta sobre como cancelar o registro, mas se você não pode cancelar o registro que eu achei que seria útil para chegar lá e retire a chave para o número da versão você já não tem, e provavelmente atualizar o valor Assembly manualmente se você ousar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top