ある端末でVB6.0のプログラムをVB2008へコンバートしました。
その後、別のVB6.0がインストールされていない端末でプログラムを実行しようとしたところ、"COMExceptionはハンドルされませんでした。"とエラーが発生しました。

上記のコンバートしたプログラムではソケット通信でwinsockを利用していました。
そのためプログラムを修正して、winsockを利用しないようにしたところ、エラーがなく実行できました。
おそらく、VB6.0がインストールされていない事が原因だと思うのですが、いまいちわかりません。

どなたかご教授お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

すでにお気づきかと思いますが、VB 6.0 のソースを .NET な Visual Studio でコンバートしても純粋な .NET アプリケーションにはならず、アプリの機能のほとんどは VB 6.0 のときに使用していた部品を使用します。

(今回のケースでいうところの Microsoft Winsock Control 6.0 とか)

開発ツールとしての VB 6.0 をインストールした PC、
上記 PC で開発したアプリをインストーラ形式で配布され、それをインストールした PC

これらは VB 6.0 や VB 6.0 のランタイムによって提供される各種コントロールがシステムに登録された状態です。
これらの PC 上で実行した VB 6.0 からコンバートされた .NET なアプリは Microsoft Winsock Control 6.0 がシステムに入っていることを期待して動作しているのではないでしょうか。

開発ツールの VB 6.0 やそのランタイムが登録されていない PC で、VB 6.0 からコンバートされた .NET なアプリを実行しても、アプリが期待している Microsoft Winsock Control 6.0 がシステムに登録されていないため COMException が発生したのではないかと考えられます。

蛇足になりますが、今回コンバートして生成されたアプリは VB 6.0 ランタイムと決別できていませんので、VB 6.0 アプリの仕様書をもとにして .NET にてゼロから作成したほうが今後のためには良いと思います。
じゃないと新規 PC に .NET アプリのインストールをするたびに VB 6.0 ランタイムもインストールし続けることになります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング