2015-08-27 3 views
5

मैं एक WPF एप्लिकेशन बना रहा हूं जहां मैं वेबसर्वर से फ़ाइल डाउनलोड करने के लिए WebCLient का उपयोग करता हूं। जब मैं डीबग मोड में अपना ऐप स्टार्टअप करता हूं तो यह अनुमति के लिए फ़ायरवॉल से पूछता है और फिर मैं इसे अनुमति देता हूं, जिससे मेरा ऐप काम करता है जैसा इसे करना चाहिए।WPF एप्लिकेशन अनुमति के लिए फ़ायरवॉल से नहीं पूछता

लेकिन रिलीज मोड में यह मुझे फ़ायरवॉल अनुमति के साथ संकेत नहीं देता है, जो फ़ाइल डाउनलोड करते समय मेरा ऐप क्रैश करता है। मैं रिलीज मोड में अपना ऐप तैनात करता हूं। जब मैं .exe फ़ाइल चलाता हूं तो मुझे तैनाती के बाद मिलता है, फिर भी यह फ़ायरवॉल अनुमति के लिए नहीं पूछता है जो मेरे ऐप को गलत तरीके से काम करता है।

क्या रिलीज़ मोड में फ़ायरवॉल प्रॉम्प्ट, शायद प्रोग्रामेटिक रूप से ट्रिगर करने का कोई तरीका है?

+0

यह प्रासंगिक हो सकता है: http://superuser.com/questions/115667/how-do-i-get-the-windows-7-firewall-to-prompt-me-whether-to-allow-or- deny-a-new – PaulF

+0

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

उत्तर

0

पढ़ना चाहिए: मैंने सी # का उपयोग करके फायरवॉल एक्सेस का अनुरोध करने का एक तरीका खोजा है लेकिन कुछ भी प्रासंगिक या सुरक्षित नहीं मिला .. बैच 100% साफ है और किसी भी प्रकार के मैलवेयर के रूप में नहीं पहचाना जाएगा। (मैं सी # में यह करने के लिए एक तरह से

मैं जोड़ने के लिए एक नियम की अनुमति देने के अनुरोध के बारे में ज्यादा पता नहीं है नहीं पा सके इस विषय से हटकर नहीं है), लेकिन मैं एक नियम जोड़ने के लिए कैसे पता:
बस इनबाउंड के लिए:

1) नोटपैड प्रारंभ करें और टाइप करें:

@echo off 
setlocal 
set RULENAME="SomethingSpecial" 
netsh advfirewall firewall show rule name=%RULENAME% >nul 
if not ERRORLEVEL 1 (goto :EOF) else (
netsh advfirewall firewall add rule name="SomethingSpecial" dir=in action=allow program="DIRECTORY" enable=yes) 
goto :EOF 

2) कुछ भी आप चाहते हैं के साथ SomethingSpecial बदलें। यह सिर्फ एक नाम है और अगर आप उसे बदल नहीं है, यह उसे सब जगह (आप SomethingSpecial रख सकते के रूप में यह है)

3) अपने रिलीज निर्माण निर्देशिका के साथ निर्देशिका बदलें (जैसे: C:\program files\something.exe) dir का मतलब दिशा सेट क्योंकि आप डाउनलोड कर रहे हैं। दोनों दिशाओं प्रकार इस के लिए:

@echo off 
setlocal 
set RULENAME="SomethingSpecial" 
netsh advfirewall firewall show rule name=%RULENAME% >nul 
if not ERRORLEVEL 1 (goto :EOF) else (
netsh advfirewall firewall add rule name="SomethingSpecial" dir=in action=allow program="DIRECTORY" enable=yes 
netsh advfirewall firewall add rule name="SomethingSpecial" dir=out action=allow program="DIRECTORY" enable=yes) 
goto :EOF 

.bat प्रारूप में सहेजें और याद पथ

अब मज़े की बात ..

अपने अनुप्रयोगों में नीचे दिए गए कोड का उपयोग .. यदि आपका प्रोग्राम व्यवस्थापक के रूप में नहीं चलता है और आप नहीं चाहते हैं कि उपयोगकर्ता अनुमति देने के लिए केवल एक बार प्रक्रिया को चलाने का तरीका ढूंढें ... शायद एक फ़ाइल, बूलियन या स्ट्रिंग में सहेजें और प्रोग्राम स्टार्टअप पर एक बार जांचें ताकि कार्यक्रम बल्ले की प्रक्रिया की बात नहीं चलाती है erytime।

ProcessStartInfo bat = new ProcessStartInfo(); 
    bat.Verb = "runas"; 
    bat.FileName = "BatchDirectory"; 
    bat.WindowStyle = ProcessWindowStyle.Hidden; 
    Process.Start(bat); 

अपने बैच निर्देशिका (प्रयोग '/' नहीं '\' बस यहाँ)

मज़े के साथ BatchDirectory बदलें! अगर आपके पास कोई प्रश्न है या आपको कोई समस्या है तो टिप्पणी करें।

+0

मैं इस मुद्दे के साथ भी संघर्ष कर रहा हूं। मुझे समझ में नहीं आता कि आपके समाधान ने समस्या को कैसे हल किया।मैंने हाथ से एक नियम जोड़ा, लेकिन इसने समस्या को हल नहीं किया –

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