• 締切済み
  • 暇なときにでも

ネット接続と「単一インスタンスのアプリケーションを作成する」設定につい

ネット接続と「単一インスタンスのアプリケーションを作成する」設定について (VB2008EEです) プロジェクトの設定(「アプリケーション」の項)で、 「単一インスタンスのアプリケーションを作成する」にチェックを入れたら、 実行(デバッグ実行ではなく、ビルドして作成されたexe実行)時に、 ウイルスバスター2010が、以下のように、 「プログラムがインターネットからデータを通信するのをブロックしました。」 とのメッセージを表示するようになりました。 プログラム自体は、通信などは全く行わないものであり、 また、上記プロジェクト設定をしなければ、メッセージが出ません。 これはどのように理解したらよいのでしょうか。 何か他に設定が必要なのでしょうか。 それともウイルスバスターがアホなのでしょうか。 それとも上記プロジェクト設定をする限りやむを得ないものなのでしょうか。 お分かりの方がいらっしゃったら教えてください。 なお、ウイルスバスターの添付メッセージ画面で、通信を許可しても 拒否しても、問題なく単一動作してます。

noname#166246

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1332
  • ありがとう数1

みんなの回答

  • 回答No.1

こんばんは。 推測でしかないですが。 「単一インスタンスのアプリケーションを作成する」のチェックを入れると、VB2008によって、あらかじめ用意されている、多重起動をチェックするためプログラムが組み込まれることになると思うのですが、そのコード内において、ソケット通信を行うようなコードが実行されてしまっているのかもしれません。 Windowsにおいて、多重起動のチェックは、自分と同じ名前のプロセスを探すとか、自分と同じクラスIDのウィンドウを探すとか、プロセス間通信のたぐいのことをします。.NET Frameworkでは、プロセス間通信のたぐいのことは、.NETリモーティング という機構として、まとめられており、その機構のなかには、ソケット通信による外部ノードとのリモーティングも含まれています。同一ノードで完結するような処理であるはずなのに、上で書いた「あらかじめ用意されている」プログラムにおいて、もしかしたら、ソケット通信を行うコードが含まれているのかもしれない、というのを、若干、苦しいですが、ひとつの仮定の材料にしましょう。。。。 これをふまえて、以下の2つが解決のヒントになると思います。 1.実行前と実行後のポートの状況を比較して、ポート番号から何の処理をしようとしているか推測する 実行前に、コマンドプロンプトから netstat /a で実行前のポートの状況をメモしておき、ウィルスバスターの警告で通信を許可して実行し、その状態での netstat /a と、実行前の結果を比較すれば、どのポートで通信をしようとしているのかわかります。ポート番号で検索してみれば、実行しようとしている処理が何かわかるかもしれません。 2.多重起動のチェックを自前で実装する アプリケーションの起動時にすでに同一のプログラムが起動しているかチェックして、起動していれば、プログラムを終了させる、というコードを自前で書く方法もあります。 以下のURLが詳しいです。 http://dobon.net/vb/dotnet/process/checkprevinstance.html これらの実装をしてみても、ウィルスバスターが警告を出すのならば、ウィルスバスター的に危険な処理ということなのでしょう。:-)      

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Delphiでインスタンスが作成されているかどうか

    Delphiでインスタンスが作成されているかどうかプログラム中で調べる方法はありますか? あるインスタンスが条件によって作成されるときと、されないときがあります。 作成されていれば、xxx.Free 作成されていなければ、何もしない というようにしたいのですが。 こんな時にはフラグとかを使うものでしょうか? それとも、xxx.Createした後でxxx.Freeとするのでしょうか?

  • 既作成ソリューション・プロジェクトのコピー手順

    以前VB2008で作成したソリューション・プロジェクト(プログラムAとします)をコピーして、 それをもとに追加機能を付加するため別ソリューション・別プロジェクトとしてコピーしました(「プログラムA_TEST」として元ファイルを単純にコピーしてDIR名をリネーム)。 ところが、プログラムA_TESTを修正し起動させたら、修正した箇所が反映させず、デバッグ(ブレイクポイントを付加)を行うと、ソースとモジュールが相違している旨のメッセージが表示され、「単一インスタンスのアプリケーションを作成する」にチェックをつけて実施すると、ブレイクポイントがプログラムA側のソースに当たります。本来このように元々あるソリューションをコピーする際の手順(なんとなく参照先を修正する必要がありそうに思えますが)があるのでしょうか? ご教示の程よろしくお願いいたします。 参考 プログラムAは4プロジェクト(APプロジェクト、共通機能プロジェクト、汎用機能プロジェクト、DBプロジェクト)で構成しています。 プログラムA_TESTも4プロジェクト(APプロジェクト、共通機能プロジェクト、汎用機能プロジェクト、DBプロジェクト)で構成されています。

  • vb2008 有料版と無料版を一つのPCにインストール。

    質問させていただきます。質問タイトルのようなことは可能なのでしょうか? なぜ上記のことが必要かいうと、 1.プログラムを配布する際は、ClickOnceやセットアッププロジェクトを使用せず、プロジェクトをまるまる配布先のPCにコピーして使いたい。(配布先PCにはVB2008EEをインストールする。開発もEEで行う。) 2.外部コンポーネントを使用した場合は、セットアッププロジェクトでプログラムの配布を行いたいので、その時に限りvb2008SEで開発を行いたい。 基本は1の方法でプログラムの配布を行いたいと思っています。 VB2008SEでプログラムの作成をしていて、万が一vb2008SE固有の機能を使用してしまい、VB2008EEで開けなかったということがないようにしたいため、開発用のPCにもEEをインストールしたいと思っています。 それと、SEがインストールされているがために、EEからでもSEの機能が使えてしまうのでは意味がないのでその辺も知っている方がいましたら 助言をお願いしたいと思っています。 以上、宜しくお願いします。

  • VB2008 でプログラムを作成している初心者です。

    VB2008 でプログラムを作成している初心者です。 順調に製作&デバッグしながら進めていたプログラムで、突然デバッグしても、作成中のアプリケーションが現れなくなりました。VB開発環境には”プログラム実行中”と表示があり動いているようですが、アプリ画面が出ていないので、そこへの入力も何も、画面確認もできません。何か、設定があるのでしょうか? ちなみに、binやdebugフォルダーのwindowsApplication1.exeをクリックすると、画面が出てきて動作します。 初歩的な問題だとは思いますが大変困っています。 どなたかお分かりになる方、ご教授ください。 よろしくお願いします。

  • クラスプロジェクトのデバッグ

    VS2003で クラスプロジェクトと アプリケーションプロジェクトを作成しています。 クラスプロジェクトを参照しています。 以前はクラスプロジェクトのデバッグが出来たのですが、 いつからか、クラスプロジェクトのデバッグは出来なくなりました。 アプリケーションプロジェクトのデバッグはできます。 何か設定があるのでしょうか?

  • アプリケーションの設定

    C++Builder6を使用しています。 プログラムを作成し、オプション→アプリケーションでアイコン等のアプリケーションの設定を行なおうと思ったのですが、 アプリケーションの設定欄に書き込むことができません。(Enable false状態) 書き込めるようにするにはどうすればよいのでしょうか? また、どういった場合に書き込めなくなるのでしょうか? よろしくお願いします。

  • VC++  Windowsアプリケーション作成

    【VC++ 2005 ExpressEdition】使用 ●今回、上記の環境を用いて簡単なWindows用ツールでも作成しようと思っております。  実際起動し、新しいプロジェクトの開始で、Windowsフォームアプリケーションを選択したのですが、初めから様々なcppファイルやらヘッダファイルがあり、プログラムもすでに大量に書かれていてどこにWinMainがあり、どこから書いていけばよいのか分かりません。 試しにボタンをフォームデザインで作成し、ダブルクリックによりイベントを作成してみたのですが、 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) このような文が表示されました。 過去にBolandの開発環境を使い1からウィンドウを作成したことがあり、BN_CLICKEDなどのメッセージが使われるのだろうと思っていたのですが全く意味が分かりませんでした。参考書やサイトに書いてあるプログラムもどこに書いてよいのか分かりません。 VC++でのWindowsアプリケーションの作成時の使い方をどなかた教えていただけないでしょうか。 尚、VC#、VBでのWindowsアプリケーション作成、C++でのWinAPIについては、かじった程度の経験はあります。

  • 関連付けるアプリケーションの設定エラー

    昨日、「サーカム(TROJ_SIRCAM.A)」というウイルスに感染して、駆除したのですが、今度はOEや他のプログラム等が次のメッセージが表示されて、開けません。 ”関連付けるアプリケーションの設定エラー” SirC32.exeが見つかりません。 このプログラムは、種類が”アプリケーション”のファイルを実行するために必要です。 SirC32.exeの場所: (空白) といった感じです。どのようにすれば良いでしょうか? 教えて下さい。

  • 常駐するアプリケーションを初めて作成したのですが、Windowsが落ちません。

    VB2008でタスクトレイにアイコンを表示して、常駐するアプリケーションを初めて作成したのですが、Windowsのシャットダウンするときに、この常駐アプリを手動で終了させないとWindowsが落ちません。 何かプログラムで足りないところがあるのでしょうか? 逆にWindowsを終了させないってある意味凄いですが、そのような仕組みはWindowsにあるのでしょうか? たまたまだったのでしょうか?

  • アプリケーション作成での質問

     現在あるソフトを作成しています。  なかなか専門的な用語が分からず、インターネットでどう検索してよいかわからなかったのでこちらで質問しました。 開発環境はWindows7、VisualStudioを用い、C#言語で開発しています。  今までのプログラムの実行方法は、統合開発環境を経由して実行したことしか経験がありません。ビルドした時に作成される「.exe」ファイルをクリックして実行したことはありますが、基本的に統合開発環境の「実行」でプログラムを実行しています。  そこで、1つ目の質問なのですが自分のプログラムを「アプリケーション」として動かすにはどうすれば良いのでしょうか?  普通ソフトはアプリケーションとして存在していて、それをダブルクリックなりタスクバーから選択するなりして実行します。そのようなアプリケーションとして自分のプログラムを実行するにはどうすれば良いのでしょうか?ビルドした時に作成される「.exe」ファイルをそのままアプリのように使っていると「.exe」ファイルのみを別の場所に移した時に参照しているファイルのパスがおかしくなってしまいます。今のところ「パッケージ化」というものをしたらいいのかな?というところまでは分かってきているのですが、この解釈が正しいのかどうかあまり自信がないです。  2つ目の質問は、Wordのように書類を扱うアプリケーションについてです。自分の解釈としては、Wordの書類をダブルクリックすると、拡張子を見ることで「Wordを用いる」という情報がわかり、OSがWordを実行する。Word側はどのファイルが開かれたのか(パスなのかな?)を受け取り、そのファイルを解析し、画面に書類を表示する。このような流れなのだろうと思っています。  しかし、このような流れの実行方法を自分で作成するにはどのようなことをしなくてはならないのでしょうか?また、このような流れで実行できるアプリケーションを何と呼ぶのでしょうか?用語がわからず調べようがない状態なんです(>_<)  例えば「&#65374;.bir」というファイルの中に日付を入力します。 そして、そのファイルをダブルクリックするとアプリケーションが実行されて、ファイルの中の日付が画面に表示される。このようなアプリケーションを試しに作ってみたいのですが...  自分の想像では... 「.bir」はどのアプリケーションの拡張子なのかをOS側に設定しておく必要がある。 アプリケーション側で「.bir」ファイルをダブルクリックした時にパスを受け取る仕組みを作っておく必要がある。  この2つがハードルなのかなぁと思っているのですがよくわからないのが現状です。  なお、現在作っているソフトは自分のPCだけで動けば良いものではなく、他のパソコンにも配布できるような形にしたいと思っています。インストーラなんかを作る形になるのでしょうがそこらへんも含めて全く知識がない状態です。  あまり用語を知らないので分かり易く説明できていないでしょうが回答お願いします。  長文失礼しました><