透过程序控制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 inte易做图ce
ovMgr:=CreateOleObject(HNetCfg.FwMgr);// Resource protection
try
// Get local profile inte易做图ce
ovProfile:=ovMgr.LocalPolicy.CurrentProfile;
// Resource protection
try
// Create new port inte易做图ce
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 inte易做图ce
ovPort:=Unassigned;
end;
finally
// Release inte易做图ce
ovProfile:=Unassigned;
end;
finally
// Release inte易做图ce
ovMgr:=Unassigned;
end;end;
补充:综合编程 , 安全编程 ,