|
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; |