DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Adicionando regras no Firewall do Windows – Porta e Programa

Fala galera do Show Delphi, tudo beleza?

Vamos a mais uma super dica, adicionar regras no firewall do Windows 10.

Isso é muito útil quando queremos automatizar liberações de nossas aplicações.

Bem, para funcionar via Delphi, vamos utilizar via ShellExecute o aplicativo nativo do Windows netsh.exe.

Para facilitar o seu uso, criei uma unit para já deixar prontas as funções de adicionar regras de portas ou programas.

Vamos ao código da unit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
unit UWindowsFirewall;
 
interface
 
uses
  ShellAPi, Forms, Windows, SysUtils, StrUtils;
 
 
procedure PortToFirewall(EntryName : String; PortNumber : Cardinal;
  Allow : Boolean = True);
procedure ApplicationToFirewall(EntryName : String;
  ApplicationPathAndExe : String; Allow : Boolean = True);
 
implementation
 
procedure PortToFirewall(EntryName : String; PortNumber : Cardinal;
  Allow : Boolean = True);
begin
  ShellExecute(Application.Handle, nil, 'netsh.exe',
    PChar(
    'advfirewall firewall add rule name = "' + EntryName +'" dir = in action = '+
    IfThen(Allow, 'allow', 'block') +' protocol = TCP localport = ' +
    IntToStr(PortNumber)
    ),
    nil, SW_HIDE);
end;
 
procedure ApplicationToFirewall(EntryName : String;
  ApplicationPathAndExe : String; Allow : Boolean = True);
begin
  ShellExecute(Application.Handle, nil, 'netsh.exe',
    PChar(
    'advfirewall firewall add rule name = "' + EntryName +'" dir = in action = '+
    IfThen(Allow, 'allow', 'block') +' protocol = ANY program = ' +
    ApplicationPathAndExe
    ),
    nil, SW_HIDE);
end;
 
end.

Exemplo – liberando porta

1
2
3
4
5
procedure TForm1.BtnRegraPortaClick(Sender: TObject);
begin
  PortToFirewall(EdtDescricaoRegraPorta.Text, EdtRegraPorta.Value,
    CheckPortaPermitir.Checked);
end;

Exemplo – liberando programa

1
2
3
4
5
procedure TForm1.BtnProgramaAplicaClick(Sender: TObject);
begin
  ApplicationToFirewall(EdtNomePrograma.Text,
    EdtPathPrograma.Text, CheckProgramaPermitir.Checked);
end;

Também gravei um vídeo pessoal, demonstrando o uso.

Testei no Windows 10, mas acredito que deva funcionar no Windows 8, 7 também.

Também disponibilizei os fontes do exemplo para download.

Download “Exemplo - Adicionar regra no Firewall do Windows”

Firewall.zip – Baixado 137 vezes – 77,42 KB

Espero que tenham gostado pessoal.

Dúvidas ou sugestões? Deixe o seu comentário.

Até a próxima. Valeu!

Facebook Comments Box
  • Giovani Da Cruz
  • 4.517 views
  • 0 comentários
  • 8 de maio de 2020

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados