作成しているアプリケーションのアウトバウンド接続用にWindowsファイアウォールを開く必要があります。
私が見つけることができた最良の答えはここにあります:
http://www.shafqatahmed.com/2008/01/controlling-win.html
http://www.vincenzo.net/isxkb/index.php?title=Adding_a_rule_to_the_Windows_firewall
問題は、メソッドがinboundルールのみを作成し、outboundは作成しないことです。 )ルール。 (C#スクリプトとInnoSetupスクリプトはどちらも同じ方法を使用します。)これは私にはまったく役に立ちません。
Windowsファイアウォールのデフォルトの動作は、送信トラフィックを許可することですが、それは誰かがそれを変更しないことを保証するものではありません。
C#で行うよりも、インストーラーで(InnoSetupを使用して)これを行う方が好きです。
私は何か見落としてますか?
outboundルールを作成する方法を知っている人はいますか?
アプリケーションにいくつかの例外を追加する必要がある場合は、netshを使用できます。
コマンドラインに書き込む(XPの場合):
netsh firewall add allowedprogram ?
コマンドラインに書き込む(W7の場合):
netsh advfirewall firewall add rule ?
netsh Firewallコマンドは非推奨であるため、この違いがあります。代わりに、コマンドnetsh advfirewall Firewallを使用する必要があります。
Netshfirewallコマンドの代わりにコマンドnetshadvfirewall Firewallを使用する方法の詳細については、ナレッジベースを参照してください。 http://go.Microsoft.com/fwlink/?linkid=121488
例:
Messenger.exeのセキュリティカプセル化なしの着信トラフィックのルールを追加します。
netsh advfirewall firewall add rule name="allow messenger" dir=in program="c:\programfiles\messenger\msmsgs.exe" security=authnoencap action=allow
ポート80での発信トラフィックのルールの追加:
netsh advfirewall firewall add rule name="allow80" protocol=TCP dir=out localport=80 action=block
ポート80を介したTCPの安全性とトラフィック暗号化を使用して、インバウンドトラフィックにルールを追加します。
netsh advfirewall firewall add rule name="Require Encryption for Inbound TCP/80" protocol=TCP dir=in localport=80 security=authdynenc action=allow
netshの問題は、一部のWindowsバージョン(Windows Vista Basicなど)では機能しないことです。そのため、netshを使用せずに例外を追加することをお勧めします。 この記事にはサンプルのInno Setupコードが含まれています 。
TechNetの機能: Windows 7、Windows Vista、Windows Server 2008、またはWindows Server 2008 R2でアウトバウンドポートルールを作成する
このようなルールをプログラムで作成するつもりだったと思いますが、その場合は、興味があるかもしれません グループポリシーオブジェクトをプログラムで操作する =。
最後に、インストール中にそれを行うことを計画している場合、InnoSetupはセットアップ時に必要なレジストリキーをマージできるはずです。
これは、Windowsコマンドラインツールに渡すことができる多くのタスクの1つです。 netshは適切なことを行いますが、(netshが行う他のすべてのように)見つけることはほぼ不可能です。単純なバージョンは次のとおりです。netsh firewall add allowedprogram <path> <name>
詳細については、以下を実行してください。netsh firewall add allowedprogram ?
これらは、[Run]
セクションで実行するか、Exec
を呼び出すことで実行できます。
これはWindows7では減価償却されることに注意してください。 Vista/2008以降のみを対象としている場合は、代わりにnetsh advfirewall firewall
を使用する必要があります。 Microsoftは 記事 前者から後者への変換について持っていますが、私はまだXPをサポートする必要があるので、これをしていません。