1

TCP/IP 通信用に C# (.NET Framework v2 を対象) で記述された COM+ コンポーネントを呼び出す従来の VB6 アプリケーションがあります。

この操作モードは、さまざまなオペレーティング システムで機能し、Windows XP、Vista、および 7 環境に正常に展開されています。

Windows 8.1 でソフトウェアのテストを開始したところですが、VB6 アプリケーションが COM+ コンポーネントを呼び出そうとすると、「オートメーション エラー」が報告されます。過去に発生したこの種のエラーは、COM+ 登録の失敗が原因であり、regsvcs.exe.

ソフトウェアは MSI によってインストールされ、MSI は regsvcs.exe を呼び出して COM+ コンポーネントを登録するスクリプトも実行します。Win 8.1 の場合、次のパスを変更する必要がありregsvcs.exeました。

C:\Windows\Microsoft.NET\Framework\v2.0.50727

に:

C:\Windows\Microsoft.NET\Framework\v4.0.30319

このインストーラーは、Win 7 と Win 8.1 の両方でテストしました。Win 7 では、COM+ 呼び出しは正常に機能します。Win 8.1 で発生している問題は、COM+ コンポーネントが正しく登録されているように見えるのに、コンポーネントの呼び出しがまだ失敗することです。コンポーネント サービスではすべて問題ないように見え、VB6 呼び出しが行われると COM+ アプリケーションが起動しますが、オートメーション エラーが返され、呼び出しは失敗します。

注: 私がテストしている Win 7 および 8.1 環境は 64 ビットです。

Windows 7 と Windows 8.1 の間でコンポーネント サービスと COM+ アプリケーションに関連する何かが変更されたようですが、解決策が見つからないようです。

誰かが同様のことを経験したことがありますか、または問題が何であるかについての指針はありますか?

4

2 に答える 2

2

さまざまなことを何時間も試した後、解決策を見つけました。.NET Framework 3.5 (Framework 2 を含む) を有効にし、パスを にregsvcs.exe戻す必要がありましたC:\Windows\Microsoft.NET\Framework\v2.0.50727

再インストール後、COM+ コンポーネントへの呼び出しが機能するようになりました。このユーティリティを v2 フォルダーから使用する場合と v4 フォルダーから使用する場合の違いについては、まだ不明です。

余談ですが、[プログラムと機能] の [Windows 機能の有効化と無効化] 機能を使用して .NET Framework 3.5 を有効にしようとすると、エラーが発生し続けました0x800F0906

次のコマンドを使用して、マウントされた Windows 8.1 ISO からインストールする必要がありました。

dism /online /Enable-Feature /FeatureName:NetFX3 /All /Source:E:\Sources\SxS /LimitAccess

E:\ は、マウントされた ISO のドライブ文字です。

私が従ったプロセスは、 https ://yellowduckguy.wordpress.com/2012/10/19/windows-8-fix-enable-feature-net-3-5-error-0x800f0906/ で説明されています。

于 2015-01-28T03:48:47.367 に答える