Windowsでファイアウォールを検出する方法は?
-
22-07-2019 - |
質問
私のアプリはウェブサイトにGETリクエストを行う必要があり、ファイアウォールでブロックされているかどうかを知り、ユーザーに例外を追加するように依頼したいです。
他の何かではなく、ファイアウォールが原因でget要求が失敗したことを確認するにはどうすればよいですか?
解決
優れたファイアウォールの場合は、できません。他のオプションの中でも、ファイアウォールは次のことができます。
- いくつかの異なる ICMP メッセージのいずれかで返信し、宛先にアクセスできないことを示す、または
- リクエストをサイレントに破棄し、タイムアウトになります。
合理的なオプションは、アプリがWebサイトにアクセスできなかった理由を説明し、いくつかの有用な提案を提供することです:
No response from www.site.com: * Your computer may not be connected to the Internet. * The site may be down. * The site may be blocked by a firewall.
The network indicated that www.site.com is not accessible: * Helpful messages go here.
重要なポイントは、失敗のタイプとその背後にある理由を区別することです。たとえば、「応答なし」のトラブルシューティングの手順は、トラブルシューティングの場合とは異なります"デバイスは、そのポートでリッスンしていないと教えてくれました"
他のヒント
短いタイムアウトでインターネットにアクセスしてみてください... コマンドが失敗した場合、ユーザーの操作を必要とするファイアウォールがマシンにあると想定できます。
ファイアウォールが良好な場合、検出できません。
Win32 Firewall APIを使用(クラシック)
所属していません StackOverflow