我用c#开发了一个Windows服务。生成PDF报告。要生成PDF文件,我使用第三方dll。应用程序在我的Windows XP平台上运行。当我在Windows Server 2008 64位版本中部署服务时,我得到了这个错误:
检索的COM类工厂
带有CLSID的组件
{46521 b1f - 0 a5b - 4871 - a4c2 fd5c9276f4c6}
由于以下错误导致失败:
80040154.
我使用regsvr32命令注册了DLL。我能够在注册表中看到这个CLSID。但问题依然存在。
有什么问题吗?
我遇到了同样的问题,但其他答案只提供了解决方案的一部分。
解决方案有两个方面:
从寄存器中删除64位。
c:\windows\system32\regsvr32.exe /U <file.dll>
这将不会删除对其他文件夹中复制的dll的引用。
or
找到名为HKEY_CLASSES_ROOT\CLSID{......}\InprocServer32的密钥。该键将DLL的文件名作为其默认值。
我删除了HKEY_CLASSES_ROOT\CLSID{......}文件夹。
将其注册为32位:
C:\Windows\SysWOW64\regsvr32 <file.dll>
将其注册为32位而不删除64位注册并不能解决我的问题。