2009-01-18 14 views
5

我有一个注册为COM互操作的DLL,所以在HKLM \ Software \ Classes \ CLSID [我的GUID] \ InprocServer32 [我的版本号] \ Codebase它有注册DLL的路径。但是,我重新安排了我的文件夹结构,以便路径不再正确。有没有方法注销该DLL而不放回,然后取消注册,然后再次删除文件?如何取消注册我的.net程序集,当它不在同一个位置?

如果我没有这个DLL,或者只有一个版本号不同,会怎么样?

回答

2

不同版本号(通常)无关紧要。只要较新的DLL包含所有在旧版本中出现的GUID,它就会被正确注销(使用regasm,exe)。当然,重新注册COM interop程序集将正确地重新定位必要的注册表项。

1

据我所知 - 所有你需要的是将DLL注册到它的新位置。
您可以使用MS工具oleview.exe将COM注册点验证到正确的位置。

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

相关问题