- PR -

[VB.NET] VB.NETでのWinsockコントロールの使用について

投稿者投稿内容
モキュラ
会議室デビュー日: 2004/04/06
投稿数: 6
お住まい・勤務地: 名古屋
投稿日時: 2004-04-06 20:52
はじめまして
モキュラと申します。

VB6.0で使用していたWinsockコントロールを
VB.NETで使用し、別のマシン(VisualStudio6.0をインストールしていないマシン)
にてアプリケーションを実行したところ、

System.Runtime.InteropServices.COMException (0x80040112): クラスを使用する使用許可がありません

というエラーが出てしまいました。
これはどうすれば解決できるのでしょうか?
色々調べてはみたのですが解決方法が分かりません。
参考情報へのリンクでも良いので何か情報があればご教授ください。

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 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/06
投稿数: 6
お住まい・勤務地: 名古屋
投稿日時: 2004-04-07 00:30
>1.デザイン時にエラーとなるのか
>2.デザイン時には問題なく、配布先でエラーになるのか

2番です。
デザイン時には問題なく動作します。
というのは開発機ではVisualStudio.NETとVisualStudio6.0が同居しているからです。

問題は配布先です。
配布先にVisualStudio6.0をインスト−ルすると問題なく動作するのですが、
アプリケーションの配布先すべてにVisualStudio6.0をインストールするわけにはいかないので
困っています。

「ランタイムライセンス」、というキーワードが関係してくるのでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-07 08:06
諸農です。

引用:

問題は配布先です。
配布先にVisualStudio6.0をインスト−ルすると問題なく動作するのですが、
アプリケーションの配布先すべてにVisualStudio6.0をインストールするわけにはいかないので
困っています。



必要な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/
りばぁ
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 130
お住まい・勤務地: 愛知県
投稿日時: 2004-04-07 09:57
引用:

モキュラさんの書き込み (2004-04-07 00:30) より:
>1.デザイン時にエラーとなるのか
>2.デザイン時には問題なく、配布先でエラーになるのか

問題は配布先です。
配布先にVisualStudio6.0をインスト−ルすると問題なく動作するのですが、
アプリケーションの配布先すべてにVisualStudio6.0をインストールするわけにはいかないので
困っています。



ということは、単純にWinsockコントロールの含まれるDLL(OCX)が実行環境にインストール
されていないのでは?
作成したEXE(?)だけを実行環境にコピーしただけでは動きませんよー。
インストーラとか作れば自動的に必要なファイルは入れてくれるかもしれません。

※非常に基本的な部分なので、それくらいはやってる!だったらスミマセン。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-04-07 11:34
モキュラさん、こんにちは。

引用:

System.Runtime.InteropServices.COMException (0x80040112): クラスを使用する使用許可がありません

というエラーが出てしまいました。
これはどうすれば解決できるのでしょうか?


VS6に同梱されているコントロールはライセンス上、基本的にVS6で作成したアプリケーションに含める形でのみ、再頒布可能だった筈です。
なので、解決してはいけないんじゃないでしょうか。
また、ネタ元は忘れましたが、一部のコントロールには、その辺りのチェックロジックが組み込まれているらしいので、上記の例外はそれによるものかもしれません。

モキュラ
会議室デビュー日: 2004/04/06
投稿数: 6
お住まい・勤務地: 名古屋
投稿日時: 2004-04-07 16:34
モキュラです。
たくさんのご返信ありがとうございます。

引用:

ということは、単純にWinsockコントロールの含まれるDLL(OCX)が
実行環境にインストールされていないのでは?


これは大丈夫です。OCXも同梱しています。

引用:

VS6に同梱されているコントロールはライセンス上、基本的にVS6で作成したアプリケーションに含める形でのみ、再頒布可能だった筈です。
なので、解決してはいけないんじゃないでしょうか。
また、ネタ元は忘れましたが、一部のコントロールには、その辺りのチェックロジックが組み込まれているらしいので、上記の例外はそれによるものかもしれません。


どうやらこれのようです。

諸農さまに教えて頂いた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で作り直した方が早いのかもしれません。

納期が迫っているのでゆっくりできませんが
もう少し色々試してみます。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-04-07 16:45
モキュラさん、こんにちは。

引用:

ということはVB6.0でWinsockを呼び出すActiveXか何かを作り、それをVB.NETで
呼び出せばラインセンス問題はクリアできる?と考え、
今、それを試している所です。(少しやってみましたがうまくいきません。もう少し試してみます。)
VB6.0で作り直した方が早いのかもしれません。


System.Net.Sockets.Socket クラスを使用するのが手っ取り早いと思います。

スキルアップ/キャリアアップ(JOB@IT)