2012-02-07 43 views
5

Ben http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/windowsfirewall/Delphi 7, Windows Vista/7 Firewall İstisna Ağ Yerleri

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; 
şey Windows 7, olup

göre buldum bu kod yığın var ve uygulanan, sadece Kamu ve olarak istisna ekler gibi özel olmayan Kamu ayarlandığında burada

enter image description here

yılında KIRMIZI daire içine görebilirsiniz olarak sadece benim programı FT aracılığıyla benim ev sahibi erişmede sorun vardır P bağlantı, böylece programımı işe yaramaz hale getirir. Bu sorun yalnızca Windows Vista/7 için özellikle geçerlidir; XP'de mevcut yapılandırma düzgün çalışıyor.

Lütfen herhangi bir ipucu veya yardımcı işaretçiniz varsa, bunları paylaşın.

cevap

8

Windows Vista'dan başlayarak, yeni güvenlik duvarı özelliklerine erişmek için INetFwPolicy2 ve INetFwRule arabirimlerini kullanmalısınız.

Genel ve Özel profilde yeni kural ekleyen bu örneği deneyin.

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

Neden düşüş yok? – RRUZ

+0

Vay, bu oldukça iyi çalışıyor, hatta Fire Wall özel ve kamu politikaları elden çıkarılabilir hale getirir! Çok teşekkürler RRUZ! – ziGi

+0

Eğer CreateOleObject sıfırlanırsa? btw, belge ile CreateOleObject için MSDN sayfası var ne olabilir ve geri dönemez? –