找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 安全攻防 查看内容

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

2009-12-14 12:38| 发布者: admin| 查看: 27| 评论: 0|原作者: 夙玉

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;


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 13:16 , Processed in 0.098836 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部