如何以編程方式將應用程序或端口添加到Windows XP上的Windows防火牆?XP的Windows防火牆規則
13
A
回答
17
嘗試從我們的開源SQlite3UI.pas部提取出驗證碼:
function GetXPFirewall(var fwMgr, profile: OleVariant): boolean;
begin
Result := (Win32Platform=VER_PLATFORM_WIN32_NT) and
(Win32MajorVersion>5) or ((Win32MajorVersion=5) and (Win32MinorVersion>0));
if result then // need Windows XP at least
try
fwMgr := CreateOleObject('HNetCfg.FwMgr');
profile := fwMgr.LocalPolicy.CurrentProfile;
except
on E: Exception do
result := false;
end;
end;
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;
procedure AddApplicationToXPFirewall(const EntryName, ApplicationPathAndExe: string);
var fwMgr, profile, app: OleVariant;
begin
if GetXPFirewall(fwMgr,profile) then
try
if profile.FirewallEnabled then begin
app := CreateOLEObject('HNetCfg.FwAuthorizedApplication');
try
app.ProcessImageFileName := ApplicationPathAndExe;
app.Name := EntryName;
app.Scope := NET_FW_SCOPE_ALL;
app.IpVersion := NET_FW_IP_VERSION_ANY;
app.Enabled :=true;
profile.AuthorizedApplications.Add(app);
finally
app := varNull;
end;
end;
finally
profile := varNull;
fwMgr := varNull;
end;
end;
procedure AddPortToXPFirewall(const EntryName: string; PortNumber: cardinal);
var fwMgr, profile, port: OleVariant;
begin
if GetXPFirewall(fwMgr,profile) then
try
if profile.FirewallEnabled then begin
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;
finally
port := varNull;
profile := varNull;
fwMgr := varNull;
end;
end;
它可以讓你將應用程序或端口添加到XP防火牆。 應該從Delphi 6一直工作到XE。
+1
我已經更新了單元的源代碼,可以在XP,Vista和Seven上運行,可以用於應用程序,也可以用於端口。請參閱http://synopse.info/forum/viewtopic.php?pid=4652#p4652 – 2012-07-11 06:51:16
6
腳本編寫Windows防火牆是可能的,例如見Scripting the Windows Firewall
和代碼示例here
相關問題
- 1. Linux iptabxes防火牆規則
- 2. 解析Python中的防火牆規則
- 3. 無法添加防火牆規則
- 4. SQL Azure 0.0.0.0防火牆規則
- 5. 優化防火牆規則處理
- 6. 如何檢查Windows防火牆中的規則?
- 7. 是否有更改Windows Server 2008上防火牆規則的API?
- 8. 使用Delphi刪除Windows防火牆規則(例外)
- 9. 在Windows Phone 8.1上添加防火牆規則
- 10. Windows防火牆入站規則和環境PATH變量
- 11. 刪除防火牆規則在Windows 7上使用Powershell
- 12. 從Java Web Start(JNLP)修改Windows防火牆規則
- 13. 將iptables規則轉換爲防火牆cmd規則
- 14. 控制Windows防火牆在C#中對Windows 7和XP SP3
- 15. 這是Windows XP防火牆的錯誤嗎?
- 16. Windows防火牆編程
- 17. 爲Windows編程防火牆
- 18. C#HttpListener和Windows防火牆
- 19. 自動化Windows防火牆
- 20. NetTcpBinding和Windows 7防火牆
- 21. 在Windows Azure上重新啓用遠程桌面Windows防火牆規則
- 22. Windows防火牆的Windows Server 2012 R2
- 23. PowerShell的避免增加重複的防火牆規則的Windows 7
- 24. 更改Windows防火牆遠程地址的腳本,排除localsubnets的規則
- 25. 如何使用Powershell確定Windows防火牆規則的程序路徑Get-NetFirewallRule
- 26. 以編程方式修改Windows Server 2008 R2中的防火牆規則
- 27. Symfony2的防火牆規則無法正常運行
- 28. 指定的值無效。使用C#添加防火牆規則
- 29. 防火牆規則C的正確設置#
- 30. 讓Azure的防火牆規則自動失效
可能重複的[編程向Windows vista防火牆添加例外](http://stackoverflow.com/questions/1409896/programatically-add-exception-to-windows-vista-firewall) – 2011-04-20 13:34:38
可能的重複[Add to防火牆例外列表](http://stackoverflow.com/questions/2384718/add-to-firewall-exception-list) – 2011-04-20 14:11:47
這個答案只適用於XP。因爲OP接受了這個及其有用的信息,所以不是一個騙局,因爲重複的作品只在win7和vista中。 – 2012-07-07 22:09:31