【发布时间】:2013-12-02 16:56:30
【问题描述】:
我想在 Windows 7 防火墙中打开一个端口以通过 Delphi 进行端口转发,但正如在其他线程中所说,Windows 7 在防火墙中有多个配置文件(公共、私有),下一个代码仅将异常添加到其中一个。
代码:
procedure addPortToFirewall(EntryName:string;PortNumber:Cardinal);
Const
NET_FW_PROFILE_DOMAIN = 0;
NET_FW_PROFILE_STANDARD = 1;
NET_FW_IP_VERSION_ANY = 2;
NET_FW_IP_PROTOCOL_UDP = 17;
NET_FW_IP_PROTOCOL_TCP = 6;
NET_FW_SCOPE_ALL = 0;
NET_FW_SCOPE_LOCAL_SUBNET = 1;var
fwMgr,port:OleVariant;
profile:OleVariant;
begin
fwMgr := CreateOLEObject('HNetCfg.FwMgr');
profile := fwMgr.LocalPolicy.CurrentProfile;
port := CreateOLEObject('HNetCfg.FWOpenPort');
port.Name := EntryName;
port.Protocol := NET_FW_IP_PROTOCOL_TCP;
port.Port := PortNumber;
port.Scope := NET_FW_SCOPE_ALL;
port.Enabled := true;
profile.GloballyOpenPorts.Add(port);
end;
我知道这是用于 Windows XP 的代码,但用于 Win 7 的代码我找不到如何打开端口而不是应用程序。
代码:
procedure TForm1.Button4Click(Sender: TObject);
const
NET_FW_PROFILE2_DOMAIN = 1;
NET_FW_PROFILE2_PRIVATE = 2;
NET_FW_PROFILE2_PUBLIC = 4;
NET_FW_IP_PROTOCOL_TCP = 6;
NET_FW_ACTION_ALLOW = 1;
var
fwPolicy2 : OleVariant;
RulesObject : OleVariant;
Profile : Integer;
NewRule : OleVariant;
begin
Profile := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC;
fwPolicy2 := CreateOleObject('HNetCfg.FwPolicy2');
RulesObject := fwPolicy2.Rules;
NewRule := CreateOleObject('HNetCfg.FWRule');
NewRule.Name := 'Test Firwwall';
NewRule.Description := 'Test Firewall';
NewRule.Applicationname := 'Exe File';
NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP;
NewRule.Enabled := TRUE;
NewRule.Profiles := Profile;
NewRule.Action := NET_FW_ACTION_ALLOW;
RulesObject.Add(NewRule);
end;
为了让所有这些都清楚,我如何使用delphi在Windows 7防火墙中打开A端口?用于多个配置文件(私人、公共)。
谢谢你的问候。
【问题讨论】:
标签: windows delphi port delphi-xe2 firewall