5

com 相互運用用に登録された dll があるため、HKLM\Software\Classes\CLSID[my guid]\InprocServer32[my version no]\Codebase の下に、登録された dll のパスがあります。ただし、フォルダー構造を再配置したため、パスが正しくなくなりました。そのdllを元に戻さずに登録解除してから登録解除してから、ファイルを再度削除する方法はありますか?

その dll がもうない場合、またはバージョン番号が異なる 1 つしかない場合はどうなりますか?

4

3 に答える 3

2

異なるバージョン番号は (一般的に) 重要ではありません。古いバージョンに表示されるすべての GUID が新しい DLL に含まれている限り、適切に登録解除されます (新しいものを regasm、exe で使用)。もちろん、COM 相互運用のためにアセンブリを再登録すると、必要なレジストリ キーが適切に再配置されます。

于 2009-01-18T21:07:19.063 に答える
1

私の知る限り、必要なのはDLLを新しい場所に登録することだけです。
MSツールoleview.exeを使用して、COM登録ポイントが正しい場所にあることを確認できます。

于 2009-01-18T20:56:58.927 に答える
0

新しい dll を登録するだけで発生した問題は、以前に登録したバージョンよりも低いバージョンになった場合です。レジストリでこれになります:

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

ランタイムは で特定されたアセンブリを読み込もうとするHKCR\CLSID\<my guid>:Assemblyので、可能であればそのアセンブリの登録を解除してみてください。

これは登録を解除する方法についての回答ではありませんが、登録を解除できない場合は、そこにアクセスして、もう持っていないバージョン番号のキーを削除し、おそらくAssembly値を手動で更新すると便利です。あなたはあえて。

于 2011-05-20T10:59:06.130 に答える