1

这就是问题所在。

我用 C# (Visual Studio 2012) 编写了一个 Windows 服务,它查询 MS SQL 数据库,然后使用 FAXCOMEXLIB 发送传真。

我可以参考 FAXCOMEXLIB 并使用服务器类和传真文档类。创建并发送传真。

但是,当我尝试使用 FAXCOMEXLIB 库中的任何其他类时,我在运行服务时收到以下错误(它编译时没有任何错误):

System.Runtime.InteropServices.COMException (0x80040111): Retrieving the COM class 
factory for component with CLSID {43C28403-E04F-474D-990C-B94669148F59} failed due to 
the following error: 80040111 ClassFactory cannot supply requested class (Exception from HRESULT: 0x80040111 (CLASS_E_CLASSNOTAVAILABLE)).
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)

这是由

FAXCOMEXLib.FaxOutgoingArchive faxOutgoing = new FAXCOMEXLib.FaxOutgoingArchive();

我试着跑

 regsvr32.exe fxscomex.dll

它没有帮助。

我还尝试手动创建和导入以下注册表项。

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}]
@="FaxOutgoingArchive Class"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\InprocServer32]
@=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,66,00,78,00,\
73,00,63,00,6f,00,6d,00,65,00,78,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\ProgID]
@="FaxComEx.FaxOutgoingArchive.1"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990CB94669148F59}\Programmable]

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\TypeLib]
@="{2BF34C1A-8CAC-419F-8547-32FDF6505DB8}"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\Version]
@="1.0"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\VersionIndependentProgID]
@="FaxComEx.FaxOutgoingArchive"

注册表项没有帮助。我尝试在 Windows 7 64 位、Windows Server 2012 64 位和 Windows Server 2008 32 位上运行该服务,结果完全相同。

任何建议将不胜感激。

4

1 回答 1

1

这是您的代码中的错误,您不应该自己创建 FaxOutgoingArchive 的实例。它在MSDN 文档中是明确的:

若要在 Microsoft Visual Basic 中创建 FaxOutgoingArchive 对象,请检索 FaxFolders 对象的 OutgoingArchive 属性。

万一这令人困惑,同样的规则也适用于 C#

于 2012-12-07T19:39:03.270 回答