Como adicionar/excluir regras no Firewall do Windows

Como adicionar/excluir regras no Firewall do Windows

Preciso implementar uma ferramenta que adicione e exclua regras no Firewall do Windows. As regras podem ser de entrada ou de saída, proibindo a comunicação em protocolos, IPs e portas especificados. Estou tendo problemas para tomar a decisão de design sobre qual das seguintes opções estou ciente de usar:

  1. PowerShell, conforme descrito, por exemplo, emhttps://technet.microsoft.com/en-us/library/jj554906(v=wps.630).aspx. O problema com esta opção é que (corrija-me se estiver errado) parece que ela não é compatível com o Windows 7, enquanto minha ferramenta deve funcionar no Windows 7, Windows 8 (.1) e, de preferência, em versões posteriores do Windows. Além disso, não tenho permissão para usar C#, enquanto o PowerShell não se integra ao C++, exceto (possivelmente, não tenho certeza) por meio da chamada do processo do PowerShell, fornecendo opções de linha de comando e leitura/gravação de/para sua saída/entrada fluxos.
  2. maneira "netsh advfirewall firewall". O problema com esta opção é que o Windows 8.1 diz que o contexto "netsh advfirewall" está obsoleto e pode ser removido de versões posteriores do Windows. Receio que seguir esse caminho faça com que minha ferramenta não funcione no Windows 9 ou 10.
  3. Interfaces COM do firewall do Windows, como nestes exemploshttps://msdn.microsoft.com/en-us/library/windows/desktop/dd339604(v=vs.85).aspx. A codificação C++ necessária não é um problema, embora possa demorar mais do que o uso do PowerShell ou da linha de comando (netsh advfirewall firewall).

Qual opção seria a melhor decisão de design para adicionar/excluir regras do Firewall do Windows? Existem outras opções ou vantagens/desvantagens das opções que listei?

Responder1

Para o Windows 7, a maneira de fazer isso é diferente

Tudo relacionado ao firewall no Server 2008/Vista/Server R2/Windows 7 é gerenciado através do objeto COM HNetCfg.FwPolicy2

deaqui

Se você deseja usar o PowerShell, mas precisa direcionar ambas as versões do sistema operacional, eu diria que escrever 2 funções seria mais simples, pois você já parece saber como fazê-lo no Windows 8.

informação relacionada