我无法删除所有的Windows 10防火墙规则总有一些规则无法删除,我不知道为什么。如何删除所有Windows 10防火墙规则?
我正在以管理员身份运行该应用程序
首先,我获取所有防火墙规则的列表并存储在列表中:listaReglas 然后我在该列表上创建一个循环并调用一个函数来删除像这样的规则
listaReglas:=TlistaReglas.Create;
ListarReglasdelFireWall(listaReglas);
for i:=0 to listaReglas.TotalReglas-1 do begin
unaRegla:= listaReglas.GetUnaRegla(i);
if DELUnaRegla(unaRegla.name, error) then begin
memo1.Lines.Add(IntToStr(i) + ' '+unaRegla.name +' removed OK')
end else begin
memo1.Lines.Add(IntToStr(i) + ' '+unaRegla.name +' ERROR removing')
end;
end;
listaReglas.Free;
DELUnaRegla()函数
function DELUnaRegla(NombreRegla:String;var ERROR:String):boolean;
var
fwPolicy2 : OleVariant;
vExisteError:Boolean;
begin
vExisteError:=False;
try
CoInitialize(nil);
try
fwPolicy2 := CreateOleObject('HNetCfg.FwPolicy2');
fwPolicy2.Rules.Remove(NombreRegla);
finally
CoUninitialize;
end;
except
on E:EOleException do begin
Error:=Format('EOleException %s %x', [E.Message,E.ErrorCode]);
vExisteError:=true;
end;
on E:Exception do begin
Error:=E.Classname + ':' + E.Message;
vExisteError:=true;
end;
end;
result:=not(vExisteError);
end;
答案 0 :(得分:0)
这是一个批处理脚本,它将删除所有规则。 -重置为默认值会清除无法正确删除的规则。
@echo off
echo - Resetting To Default
netsh advfirewall reset >nul 2>&1
echo - Deleting Rules (In)
netsh advfirewall firewall show rule name=all dir=in | find /i "Rule Name:" > "%tmp%\1.txt"
for /f "tokens=3*" %%A in ('type "%tmp%\1.txt"') do (
netsh advfirewall firewall delete rule Name="%%A %%B" >nul 2>&1)
echo - Deleting Rules (Out)
netsh advfirewall firewall show rule name=all dir=out | find /i "Rule Name:" > "%tmp%\1.txt"
for /f "tokens=3*" %%A in ('type "%tmp%\1.txt"') do (
netsh advfirewall firewall delete rule Name="%%A %%B" >nul 2>&1)