2012-02-07 10 views
5

मैं कोड है जो मैंने पाया की इस हिस्सा है और http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/windowsfirewall/डेल्फी 7 Windows Vista/7 फ़ायरवॉल अपवाद नेटवर्क स्थान

procedure AddExceptionToFirewall (Caption: String; Executable: String); 
var 
    FirewallMsg: OleVariant; 
    Application: OleVariant; 
    CurrentProfile: OleVariant; 
begin 
    FirewallMsg:= CreateOLEObject ('HNetCfg.FwMgr'); 
    CurrentProfile:= FirewallMsg.LocalPolicy.CurrentProfile; 
    Application:= CreateOLEObject ('HNetCfg.FwAuthorizedApplication'); 
    Application.ProcessImageFileName:= Executable; 
    Application.Name:= Caption; 
    Application.Scope:= FW_SCOPE_ALL; 
    Application.IpVersion:= FW_IP_VERSION_ANY; 
    Application.Enabled:= True; 
    CurrentProfile.AuthorizedApplications.Add (Application); 
end; 

बात विंडोज 7 पर, है के अनुसार लागू किया, यह केवल सार्वजनिक और के रूप में अपवाद कहते हैं के रूप में निजी नहीं तुम यहाँ

enter image description here

में लाल में वृत्त में देख सकते हैं सार्वजनिक पर सेट जब केवल, मेरे कार्यक्रम एक एफटी के माध्यम से मेरे मेजबान तक पहुंचने में समस्या है पी कनेक्शन, इस प्रकार मेरे कार्यक्रम बेकार rendering। यह समस्या केवल Windows Vista/7 के लिए विशेष है; एक्सपी पर, वर्तमान कॉन्फ़िगरेशन ठीक काम करता है।

यदि आपके पास कोई सुराग या सहायक पॉइंटर्स है, तो उन्हें साझा करें।

उत्तर

8

विंडोज विस्टा से शुरू करना आपको नई फ़ायरवॉल सुविधाओं तक पहुंच प्राप्त करने के लिए INetFwPolicy2 और INetFwRule इंटरफेस का उपयोग करना होगा।

इस नमूना को आजमाएं जो सार्वजनिक और निजी प्रोफ़ाइल में एक नया नियम जोड़ता है।

procedure AddExceptionToFirewall(Const Caption, Executable: String); 
const 
NET_FW_PROFILE2_DOMAIN = 1; 
NET_FW_PROFILE2_PRIVATE = 2; 
NET_FW_PROFILE2_PUBLIC = 4; 

NET_FW_IP_PROTOCOL_TCP = 6; 
NET_FW_ACTION_ALLOW = 1; 
var 
    fwPolicy2  : OleVariant; 
    RulesObject : OleVariant; 
    Profile  : Integer; 
    NewRule  : OleVariant; 
begin 
    Profile    := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC; 
    fwPolicy2   := CreateOleObject('HNetCfg.FwPolicy2'); 
    RulesObject   := fwPolicy2.Rules; 
    NewRule    := CreateOleObject('HNetCfg.FWRule'); 
    NewRule.Name  := Caption; 
    NewRule.Description := Caption; 
    NewRule.Applicationname := Executable; 
    NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP; 
    NewRule.Enabled := TRUE; 
    NewRule.Profiles := Profile; 
    NewRule.Action := NET_FW_ACTION_ALLOW; 
    RulesObject.Add(NewRule); 
end; 
+1

डाउनवोट क्यों? – RRUZ

+0

वाह जो बहुत अच्छा काम करता है, यह फायर वॉल निजी और सार्वजनिक नीतियों को मैन्युअल रूप से अपरिवर्तनीय भी प्रस्तुत करता है! बहुत धन्यवाद RRUZ! – ziGi

+0

क्या होगा अगर CreateOleObject शून्य लौटाता है? बीटीडब्ल्यू, क्या CreateOleObject के लिए एमएसडीएन पेज दस्तावेज के साथ है जो यह कर सकता है और वापस नहीं आ सकता है? –

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