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では、例外をパブリックとしてのみ追加し、ここで赤で囲まれているようにプライベートとしては追加しないことです。
パブリックのみに設定すると、プログラムがFTP接続を介してホストにアクセスする際に問題が発生するため、プログラムが使用できなくなります。この問題は、Windows Vista/7でのみ発生します。XPでは、現在の構成は正常に機能します。
手がかりや役立つポインタがあれば、共有してください。