Delphi 7 Windows Vista/7 防火墙异常(exception)网络位置

标签 delphi windows-vista delphi-7 windows-firewall

我有这段代码,是我根据http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/windowsfirewall/找到并实现的。

procedure AddExceptionToFirewall (Caption: String; Executable: String);
var
  FirewallMsg: OleVariant;
  Application: OleVariant;
  CurrentProfile: OleVariant;
begin
  FirewallMsg:= CreateOLEObject ('HNetCfg.FwMgr');
  CurrentProfile:= FirewallMsg.LocalPolicy.CurrentProfile;
  Application:= CreateOLEObject ('HNetCfg.FwAuthorizedApplication');
  Application.ProcessImageFileName:= Executable;
  Application.Name:= Caption;
  Application.Scope:= FW_SCOPE_ALL;
  Application.IpVersion:= FW_IP_VERSION_ANY;
  Application.Enabled:= True;
  CurrentProfile.AuthorizedApplications.Add (Application);
end;

问题是,在 Windows 7 上,它仅将异常(exception)添加为“公共(public)”,而不是“私有(private)”,如您在此处用红色圈出的那样

enter image description here

当设置为仅限公共(public)时,我的程序在通过 FTP 连接访问我的主机时出现问题,从而导致我的程序无用。 此问题仅针对 Windows Vista/7;在 XP 上,当前配置运行良好。

如果您有任何线索或有用的指示,请分享。

最佳答案

从 Windows Vista 开始,您必须使用 INetFwPolicy2INetFwRule接口(interface)来访问新的防火墙功能。

尝试此示例,在公共(public)和私有(private)配置文件中添加新规则。

procedure AddExceptionToFirewall(Const Caption, Executable: String);
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        := Caption;
  NewRule.Description := Caption;
  NewRule.Applicationname := Executable;
  NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP;
  NewRule.Enabled := TRUE;
  NewRule.Profiles := Profile;
  NewRule.Action := NET_FW_ACTION_ALLOW;
  RulesObject.Add(NewRule);
end;

关于Delphi 7 Windows Vista/7 防火墙异常(exception)网络位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180348/

相关文章:

arrays - 将一行文本放入由引号分隔的数组中?德尔福

sql - Delphi加载图像保存为sql数据库中的blob

delphi - 无法在组框上拖放单选按钮

delphi - 自动允许 Ctrl+A 选择 TMemo 中的所有内容?

Delphi Windows 服务命令行参数

delphi - MP3/wav 音频文件的持续时间

java - Vim:从 vim 命令运行 java 会出错

cmd - 如何以管理员身份从 Windows 命令行运行命令?

python - 在 Vista 中以管理员身份运行已编译的 python (py2exe)

delphi - 使用 Delphi 7 复制 Excel 公式