2011-08-04 13 views
8

मेरे पास एक ऐसा एप्लिकेशन है जो नेट एप डिवाइस के साथ अपने एपीआई के माध्यम से संचार करता है। विंडोज फ़ायरवॉल के साथ, एपीआई कमांड विफल हो जाएंगे। फ़ायरवॉल बंद होने के साथ, एपीआई कमांड काम करते हैं। मुझे कोई संदेश नहीं मिला है जैसे "विंडोज फ़ायरवॉल इस कार्यक्रम को अवरुद्ध कर रहा है"।पता लगाएं कि विंडोज फ़ायरवॉल मेरे प्रोग्राम को अवरुद्ध कर रहा है

प्रलेखन के माध्यम से देख रहे हैं मुझे विश्वास है कि मैं TCP पोर्ट एपीआई काम करने के लिए आदेश के लिए खुला होने की जरूरत है कि पाया। बंदरगाहों को अवरुद्ध कर दिया गया है, तो मैं प्रोग्रामिक रूप से कैसे पता लगा सकता हूं ताकि मैं संभावित समस्या पर उपयोगकर्ता को एक संदेश प्रदर्शित कर सकूं?

उत्तर

11

फ़ायरवॉल प्रबंधक कॉम के माध्यम से ही उजागर करता है और एक IsPortAllowed लागू करता है, यहाँ प्रबंधक के साथ बातचीत का एक interop example है।

+0

+1 प्रोग्रामेटिक प्रश्न का उत्तर देने लगता है। –

+0

यह केवल आने वाले यूडीपी बंदरगाहों के लिए काम करता है - यातायात को अवरुद्ध करने के लिए एक आउटगोइंग नियम जोड़ना इस फ़ंक्शन द्वारा ज्ञात नहीं है।इसके अतिरिक्त, यदि आने वाले यूडीपी पोर्ट को अवरुद्ध के रूप में रिपोर्ट किया गया है तो फ़ायरवॉल को छेदने के लिए अभी भी संभव हो सकता है। – Pete

+0

कोई विचार यह पता लगाने के लिए कि आउटगोइंग यूडीपी अवरुद्ध है या नहीं? – Pete

3

पता लगाने के लिए अगर पोर्ट अवरोधित हैं - Win7 पर आप Windows फ़ायरवॉल खोलने के द्वारा विंडो फ़ायरवॉल लॉग देख सकते हैं - बाईं ओर मौजूद उन्नत सेटिंग्स क्लिक करें और फिर निगरानी शाखा खोलें।

लॉगिंग सेटिंग्स अनुभाग में निगरानी टैब पर नोट फ़ाइल पर लॉग इन करने का एक विकल्प है जो मेरे Win7 पीसी %systemroot%\system32\LogFiles\Firewall\pfirewall.log पर है - आप बस इस फ़ाइल को पार्स कर सकते हैं। मैंने अतीत में शोध किया है और आपके लिए ऐसा करने के लिए वहां उपयोगिताएं हैं, हालांकि, दिन के अंत में यह केवल एक मानक प्रारूप लॉग फ़ाइल है।

+0

क्षमा करें, मैंने सवाल स्पष्ट किया है, लेकिन मैं इसे प्रोग्रामिक तरीके से कैसे कर सकता हूं? – Web

+0

क्यों -1? मेरा जवाब इस प्रोग्रामेटिक रूप से करने के लिए संपादन से पहले था। –

+0

हाँ, मेरे साथ ही: -एस। – OnesimusUnbound

1

मुझे शक है कि फ़ायरवॉल का उल्लेख है कि यह एप्लिकेशन को बाधित कर रहा है, अन्यथा घुसपैठिया क्या उसे प्रणाली :-) तक पहुँचने के लिए रोकने पर एक जानकारी हो सकती है।

आमतौर पर, फ़ायरवॉल लॉग कंप्यूटर से कनेक्ट होने का प्रयास करते हैं, सफल होते हैं या नहीं, आप इसे देख सकते हैं।

अद्यतन *

आप नेटवर्क में Acknowledgement कोशिश कर सकते हैं। अगर आपको कुछ समय के लिए कोई नहीं मिला है, तो आप सुरक्षित रूप से कह सकते हैं कि कनेक्शन में कोई समस्या है।

8

आप इस तरह यह कर सकते हैं मुझे लगता है कि: बंदरगाह आप जाँच करना चाहते हैं के लिए बदलें 1433: इसे आजमाइए।

C:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net.Sockets; 

namespace CheckPortStatus 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       TcpClient tcp = new TcpClient(); 
       tcp.Connect("localhost", Convert.ToInt16(1433)); 
       Console.WriteLine("online"); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("offline"); 
       Console.WriteLine(ex.Message); 
      } 
     } 
    } 
} 

इसके अलावा, जो बंदरगाहों अपने मशीन चलाने में उपलब्ध हैं देखने के लिए> netstat -एक | लगता है/मैं "सुन"

टीसीपी 0.0.0.0:25 0.0 .0.0: 0

टीसीपी 0.0.0.0:80 0.0.0.0:0 सुन सुन

टीसीपी 0.0.0.0:135 0.0.0.0:0 सुन

+0

अब मुझे आश्चर्य हुआ कि इस प्रोग्रामेटिक उत्तर को क्यों मिला -1। – OnesimusUnbound

+1

हाँ, यह क्यों गिराया गया था? उत्तर में क्या गलत है? – Web

+1

यह आपको विंडोज फ़ायरवॉल के बारे में कुछ भी नहीं बताता है। एक लाख और एक अन्य कारण हैं कि यह असफल क्यों हो सकता है। – Roddy

संबंधित मुद्दे