- - PR -
[VB.NET] VB.NETでのWinsockコントロールの使用について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-06 20:52
はじめまして
モキュラと申します。 VB6.0で使用していたWinsockコントロールを VB.NETで使用し、別のマシン(VisualStudio6.0をインストールしていないマシン) にてアプリケーションを実行したところ、 System.Runtime.InteropServices.COMException (0x80040112): クラスを使用する使用許可がありません というエラーが出てしまいました。 これはどうすれば解決できるのでしょうか? 色々調べてはみたのですが解決方法が分かりません。 参考情報へのリンクでも良いので何か情報があればご教授ください。 | ||||||||
|
投稿日時: 2004-04-06 21:43
諸農です。
確認しますが、 1.デザイン時にエラーとなるのか 2.デザイン時には問題なく、配布先でエラーになるのか のどっちでしょうか? 1であれば 「マイクロソフト サポート技術情報 - 318597」 [PRB] Visual Basic 6.0 のコントロールを Visual Studio .NET で使用するとエラーが発生する http://support.microsoft.com/default.aspx?scid=kb;ja;318597 に該当すると思いますが、2の現象は良くわかりませんね。
色々と調べたという事ですが、 具体的に何をどうやって調べて、そしてどのような結果しか得られなかったのか、 そういった事も投稿内容に含めると、より確実なレスポンスが期待できます。 もしも、モキュラさんが私が上記で掲載した情報を既にお持ちなら、 この投稿って、まったく意味のないものになるでしょ? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-04-07 00:30
>1.デザイン時にエラーとなるのか
>2.デザイン時には問題なく、配布先でエラーになるのか 2番です。 デザイン時には問題なく動作します。 というのは開発機ではVisualStudio.NETとVisualStudio6.0が同居しているからです。 問題は配布先です。 配布先にVisualStudio6.0をインスト−ルすると問題なく動作するのですが、 アプリケーションの配布先すべてにVisualStudio6.0をインストールするわけにはいかないので 困っています。 「ランタイムライセンス」、というキーワードが関係してくるのでしょうか? | ||||||||
|
投稿日時: 2004-04-07 08:06
諸農です。
必要なOCX(ActiveX?)も同梱して配布、相手側PCに配布に含まれる OCX(ActiveX)を登録したのにかかわらず動作しないという事でしょうか? Googleで「Winsock VB6 ライセンス」で検索したところ http://homepage1.nifty.com/MADIA/vb/vb_bbs/200312_03120107.html がヒットしました。 ここでは「コンパイル後の実行ファイルにはライセンス情報が含まれる」と 書かれていますが、もしもこれが信頼できる情報であれば、今回のモキュラさんが 遭遇している状況とは相容れない事になりますね。 動作しない配布先ではOCXの登録は完了しているという事は確認済みなんですよね。 Winsock以外のOCX(ActiveX)を使ったプロジェクトも同様の現象が発生しますか? もちろん、利用するOCXが配布先PCにインストール/登録されているという前提ですが。 問題の切り分けとして、別のVB6がインストールされている環境に 当該の実行ファイルを配布し、動作するかどうかを確認する、というのが 現時点では思い付きますが、その確認はもうお済みであると言う事ですね。 であるなら、残されている確認項目としては、動作しない環境でのOCXの登 録状態を確認する事ぐらいでしょうか。 また回避方法として、工数や工期の問題がクリアされたとして、 仕様を見直した上で、Winsock利用の部分を、FCLのSocketクラス に置き換えるなどが考えられます。 いずれにせよ解決できなかったということでは、 お役に立てなかったようです。申し訳ないですm(__)m あと、こんなのも見つけました。 マイクロソフト サポート技術情報 - 194751 Visual Basic 6.0 のライセンスの問題を修正する(VB6CLI.EXE) http://support.microsoft.com/default.aspx?scid=kb;ja;194751 ライセンスとは関係ないかもしれませんが、サービスパック6で Winsockの修正がされているようです。 マイクロソフト サポート技術情報 - 834001 Visual Studio 6.0 Service Pack 6 で修正された問題の一覧 http://support.microsoft.com/default.aspx?scid=kb;ja;834001 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-04-07 09:57
ということは、単純にWinsockコントロールの含まれるDLL(OCX)が実行環境にインストール されていないのでは? 作成したEXE(?)だけを実行環境にコピーしただけでは動きませんよー。 インストーラとか作れば自動的に必要なファイルは入れてくれるかもしれません。 ※非常に基本的な部分なので、それくらいはやってる!だったらスミマセン。 | ||||||||
|
投稿日時: 2004-04-07 11:34
モキュラさん、こんにちは。
VS6に同梱されているコントロールはライセンス上、基本的にVS6で作成したアプリケーションに含める形でのみ、再頒布可能だった筈です。 なので、解決してはいけないんじゃないでしょうか。 また、ネタ元は忘れましたが、一部のコントロールには、その辺りのチェックロジックが組み込まれているらしいので、上記の例外はそれによるものかもしれません。 | ||||||||
|
投稿日時: 2004-04-07 16:34
モキュラです。
たくさんのご返信ありがとうございます。
これは大丈夫です。OCXも同梱しています。
どうやらこれのようです。 諸農さまに教えて頂いたURL http://support.microsoft.com/default.aspx?scid=kb;ja;318597 にて 方法 2 : ライセンス キーをレジストリに追加 を配布先マシンにて試してみたところ、エラーが消えました。 しかしこの方法は配布先にVisualライセンス契約が必要らしいので やはり使えない、ということになってしまいます。 http://homepage1.nifty.com/MADIA/vb/vb_bbs/200312_03120107.html こちらの情報にて >VB6製アプリに付属させる形でocxを配布する事はできる と書いてあるので VB6.0で作成したアプリからShell "VB.netで作成したアプリ" を起動してみたところ、 やはりエラーがでてしまいましたので(当然か・・・) VB.NETで作成したアプリからWinsockコントロールを呼び出すことがライセンス違反 ということになるようです。 ということはVB6.0でWinsockを呼び出すActiveXか何かを作り、それをVB.NETで 呼び出せばラインセンス問題はクリアできる?と考え、 今、それを試している所です。(少しやってみましたがうまくいきません。もう少し試してみます。) VB6.0で作り直した方が早いのかもしれません。 納期が迫っているのでゆっくりできませんが もう少し色々試してみます。 | ||||||||
|
投稿日時: 2004-04-07 16:45
モキュラさん、こんにちは。
System.Net.Sockets.Socket クラスを使用するのが手っ取り早いと思います。 |