21

私は、定義済みのポート (12345 としましょう) で WCF サービスをホストする .Net 4.0 C# Windows Forms アプリを開発しています。この WCF サービスと通信する別の iPad アプリがあり、この接続は Windows ファイアウォールによってブロックされています。私のユーザーは、このアプリを例外リストなどに追加することを覚えておく必要があるため、常に問題を抱えています。これが不満の原因です。

アプリをより使いやすくするために、Windows で以下のスクリーンショットのようなポップアップを表示するには何が必要ですか?

更新- Windows ファイアウォールのルールをプログラムで更新できることは理解しています。ただし、それには管理者権限が必要であり、常に実行できるとは限りません。たとえば、将来 ClickOnce の展開について考えていますが、これがどのように機能するかはわかりません。そのため、そのダイアログを取得するにはどうすればよいか、まだ疑問に思っています。


解決策: 以下の @alexw の回答のおかげで、次の単純なコードを使用してダイアログを取得できました。

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);

TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();

その他 -ドキュメントに記載されているように、WCF サービスのこのポップアップを取得することはできません(下部を参照)。

WCF のセルフホステッド HTTP アドレッシングは、Windows ファイアウォールに統合されていません。特定の URL を使用したインバウンド接続を許可するには、ファイアウォール構成に例外を追加する必要があります。

ここに画像の説明を入力

4

3 に答える 3

1

推測ですが、これを表示するには、アプリの UAC 管理者権限を有効にする必要があるのではないでしょうか?

その方法については、次のブログ記事をご覧ください: http://victorhurdugaci.com/using-uac-with-c-part-2/

于 2012-05-31T10:59:07.437 に答える
1

このダイアログを公開するために満たす必要がある条件はわかりません。通常の Windows インスタンスでリッスン ポートを開こうとするアプリケーションは、常にこのダイアログを表示する必要があると思います。アプリケーションを「承認済みアプリケーション」リストに追加するか、Windows ファイアウォール COM 相互運用機能 (NetFwTypeLib) を使用してポートを手動で開いてみませんか?

http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx

于 2012-05-27T07:23:04.050 に答える
0

埋め込みアプリケーションのマニフェスト ファイルをアプリケーションに追加し、require administrator を設定して、ファイアウォール ルールを変更する bach ファイルを実行できるようにする必要があると思います。これは、 bachファイルを使用してポートを開く方法の例です

于 2012-06-02T12:41:52.257 に答える