2013-03-02 11 views
10

के माध्यम से विंडोज फ़ायरवॉल पर बंदरगाहों को कैसे खोलें बैच फ़ाइल के माध्यम से विंडोज पर विशिष्ट बंदरगाहों को खोलने के लिए बैच फ़ाइल के भीतर कोई तरीका है? उपयोगकर्ता को मैन्युअल रूप से ऐसा करने के बजाय इंस्टॉलर हमारे सर्वर एप्लिकेशन के लिए ऐसा करना अच्छा लगेगा।बैच फ़ाइल

उत्तर

17

netsh.exe का उपयोग करें। एक बहुत सरल बैच फ़ाइल है कि एक बंदरगाह तर्क लेता है:

@echo off 
rem -- open port (first argument passed to batch script) 
netsh advfirewall firewall add rule name="Open Port %1" dir=in action=allow protocol=TCP localport=%1 
+2

नोट में मदद करता है कि इस प्रक्रिया को शुरू करने netsh (या जो भी netsh की शुरूआत, उदाहरण के लिए अपने बैच फ़ाइल की तरह) व्यवस्थापक privledges जरूरत बंदरगाह अपवाद बनाने के लिए। आपका इंस्टॉलर आम तौर पर इंस्टॉल-टाइम पर इसे संभाल सकता है कि इंस्टॉलर व्यवस्थापक निजीकरण के साथ चल रहा है या नहीं। –

7

यह @Kevin रिचर्डसन द्वारा प्रदान समाधान का एक विस्तार है। ध्यान दें कि "netsh advfirewall नियम जोड़ें" कमांड उसी आदेश के साथ एक नया नियम बनायेगा जब भी आप एक ही कमांड चलाते हैं। नीचे स्क्रिप्ट यह को रोकने के लिए

ECHO OFF 
set PORT=8081 
set RULE_NAME="Open Port %PORT%" 

netsh advfirewall firewall show rule name=%RULE_NAME% >nul 
if not ERRORLEVEL 1 (
    rem Rule %RULE_NAME% already exists. 
    echo Hey, you already got a out rule by that name, you cannot put another one in! 
) else (
    echo Rule %RULE_NAME% does not exist. Creating... 
    netsh advfirewall firewall add rule name=%RULE_NAME% dir=in action=allow protocol=TCP localport=%PORT% 
) 
+0

मैंने आपके समाधान की कोशिश की है (लेकिन% RULENAME% को% RULE_NAME% के साथ echoes में बदलकर ...) और यह अपेक्षित के रूप में काम करता है, धन्यवाद! –

+0

धन्यवाद यह बहुत उपयोगी था – wishman