科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道如何透过程序来控制 Windows XP防火墙的开关

如何透过程序来控制 Windows XP防火墙的开关

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

作者:安全中国 2007年10月29日

关键字: 系统安全 Xp Windows Windows 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 的部份,不过还没测试!不过我还是希望写成简单形式的函数库呼叫方式,大家一起來测试吧!

  出处: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;

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章