1

これが問題です。

MS SQL データベースにクエリを実行し、FAXCOMEXLIB を使用して FAX を送信する Windows サービスを C# (Visual Studio 2012) で作成しました。

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 に答える