XP

2011-04-20 10 views
13

के लिए विंडोज फ़ायरवॉल नियम Windows XP पर Windows फ़ायरवॉल में प्रोग्रामेटिक रूप से कोई एप्लिकेशन या पोर्ट कैसे जोड़ें?XP

+0

संभावित डुप्लिकेट [प्रोग्रामिंग रूप से विंडोज विस्टा फ़ायरवॉल में अपवाद जोड़ें।] (Http://stackoverflow.com/questions/1409896/programatically-add-exception-to-windows-vista-firewall) –

+0

संभावित डुप्लिकेट [जोड़ें में जोड़ें फ़ायरवॉल अपवाद सूची] (http://stackoverflow.com/questions/2384718/add-to-firewall-exception-list) –

+2

यह उत्तर केवल xp में काम करता है। संपादित शीर्षक से ओपी ने इसे और इसकी उपयोगी जानकारी स्वीकार कर ली, इसलिए केवल Win7 और विस्टा में डुप्लिकेट कामों के बाद से एक डुप्ली नहीं है। –

उत्तर

17

इस कोड को हमारे खुला स्रोत SQlite3UI.pas इकाई से निकाले का प्रयास करें:

function GetXPFirewall(var fwMgr, profile: OleVariant): boolean; 
begin 
    Result := (Win32Platform=VER_PLATFORM_WIN32_NT) and 
    (Win32MajorVersion>5) or ((Win32MajorVersion=5) and (Win32MinorVersion>0)); 
    if result then // need Windows XP at least 
    try 
    fwMgr := CreateOleObject('HNetCfg.FwMgr'); 
    profile := fwMgr.LocalPolicy.CurrentProfile; 
    except 
    on E: Exception do 
     result := false; 
    end; 
end; 

const 
    NET_FW_PROFILE_DOMAIN = 0; 
    NET_FW_PROFILE_STANDARD = 1; 
    NET_FW_IP_VERSION_ANY = 2; 
    NET_FW_IP_PROTOCOL_UDP = 17; 
    NET_FW_IP_PROTOCOL_TCP = 6; 
    NET_FW_SCOPE_ALL = 0; 
    NET_FW_SCOPE_LOCAL_SUBNET = 1; 

procedure AddApplicationToXPFirewall(const EntryName, ApplicationPathAndExe: string); 
var fwMgr, profile, app: OleVariant; 
begin 
    if GetXPFirewall(fwMgr,profile) then 
    try 
    if profile.FirewallEnabled then begin 
     app := CreateOLEObject('HNetCfg.FwAuthorizedApplication'); 
     try 
     app.ProcessImageFileName := ApplicationPathAndExe; 
     app.Name := EntryName; 
     app.Scope := NET_FW_SCOPE_ALL; 
     app.IpVersion := NET_FW_IP_VERSION_ANY; 
     app.Enabled :=true; 
     profile.AuthorizedApplications.Add(app); 
     finally 
     app := varNull; 
     end; 
    end; 
    finally 
    profile := varNull; 
    fwMgr := varNull; 
    end; 
end; 

procedure AddPortToXPFirewall(const EntryName: string; PortNumber: cardinal); 
var fwMgr, profile, port: OleVariant; 
begin 
    if GetXPFirewall(fwMgr,profile) then 
    try 
    if profile.FirewallEnabled then begin 
     port := CreateOLEObject('HNetCfg.FWOpenPort'); 
     port.Name := EntryName; 
     port.Protocol := NET_FW_IP_PROTOCOL_TCP; 
     port.Port := PortNumber; 
     port.Scope := NET_FW_SCOPE_ALL; 
     port.Enabled := true; 
     profile.GloballyOpenPorts.Add(port); 
    end; 
    finally 
    port := varNull; 
    profile := varNull; 
    fwMgr := varNull; 
    end; 
end; 

यह करने के लिए आप की अनुमति देगा XP फ़ायरवॉल में कोई एप्लिकेशन या पोर्ट जोड़ें। डेल्फी 6 से XE तक काम करना चाहिए।

+1

मैंने एक्सपी, विस्टा और सेवन पर काम करने के लिए इकाई के स्रोत को अद्यतन किया है, या तो एक पोर्ट के लिए, या तो एक आवेदन के लिए। Http://synopse.info/forum/viewtopic.php?pid=4652#p4652 देखें –

6

पटकथा Windows फ़ायरवॉल संभव है, उदाहरण के लिए Scripting the Windows Firewall

और कोड उदाहरण देखें here

+0

मैं डेल्फी 7 का उपयोग करता हूं! –

+0

डेल्फी 7 COM आधारित स्क्रिप्टिंग का समर्थन करता है – mjn

+0

इस मामले में आपको टाइप लाइब्रेरी आयात करने का प्रयास करना चाहिए, मेरा लिंक देखें, यह उल्लेख करता है कि टाइप लाइब्रेरी DLL फ़ाइल 'आमतौर पर" सी: \ विंडोज \ System32 \ hnetcfg.dll "में स्थित है। (यह आलेख XP के बारे में है, मैंने विंडोज 7 में चेक किया है और इस नाम वाली एक फ़ाइल है) – mjn

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