当前位置:编程学习 > 网站相关 >>

透过程序控制XP防火墙开关

Dim objFW As Object  

    Set objFW = CreateObject("HNetCfg.FwMgr").LocalPolicy.CurrentProfile
    With objFW
        .FirewallEnabled = True True 开启 , False 关闭
             .ExceptionsNotAllowed = True [ 不允许例外 ] 选项 , True 勾 , 反之则不勾
    End With


procedure Set_WindowsXP_FireWall(Enable: boolean);
// 需引用 winsvc, shellapi
// Set_WindowsXP_FireWall(false); // 关闭Windows Xp 防火牆
//
var
  SCM, hService: LongWord;
  sStatus: TServiceStatus;
begin
  if Enable = false then
  begin
    SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    hService := OpenService(SCM, PChar(SharedAccess), SERVICE_ALL_ACCESS);
    ControlService(hService, SERVICE_CONTROL_STOP, sStatus);
    CloseServiceHandle(hService);
  end;
end;

设定Port 的部份,不过还没测试!不过我还是希望写成简单形式的函数库呼叫方式,大家一起來测试吧!

出处:html">http://www-new.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22122056.html
Example of both adding and removing a tcp port from the globaly open ports list (in Windows XP firewall)

Regards,
Russell

// Include ActiveX and ComObj in uses clause (also Variants for D6 and up)

const
  NET_FW_PROFILE_DOMAIN      =  0;
  NET_FW_PROFILE_STANDARD    =  1;

const
  NET_FW_IP_PROTOCOL_TCP     = 6;
  NET_FW_IP_PROTOCOL_UDP     = 17;

const
  NET_FW_SCOPE_ALL           =  0;

const
  NET_FW_IP_VERSION_ANY      =  2;

implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var  ovMgr:         OleVariant;
     ovProfile:     OleVariant;
     ovPort:        OleVariant;
begin

  // Create manager interface
  ovMgr:=CreateOleObject(HNetCfg.FwMgr);

  // Resource protection
  try
     // Get local profile interface
     ovProfile:=ovMgr.LocalPolicy.CurrentProfile;
     // Resource protection
     try
        // Create new port interface
        ovPort:=CreateOleObject(HNetCfg.FwOpenPort);
        try
           // Set port properties
           ovPort.Port:=81;
           ovPort.Name:=Whatever;
           ovPort.Scope:=NET_FW_SCOPE_ALL;
           ovPort.IpVersion:=NET_FW_IP_VERSION_ANY;
           ovPort.Protocol:=NET_FW_IP_PROTOCOL_TCP;
           ovPort.Enabled:=True;
           // Resource protection
           try
              // Add to globally open ports
              ovProfile.GloballyOpenPorts.Add(ovPort);

              ////
              // .... do whatever ....
              ////

           finally
              // Remove from globally open ports
              ovProfile.GloballyOpenPorts.Remove(81, NET_FW_IP_PROTOCOL_TCP);
           end;
        finally
           // Release interface
           ovPort:=Unassigned;
        end;
     finally
        // Release interface
        ovProfile:=Unassigned;
     end;
  finally
     // Release interface
     ovMgr:=Unassigned;
  end;

end;

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,