Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 18-07-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 321
Poder: 4
pgranados Va por buen camino
Gracias por sus aportes, al final utilice el procedimiento de Casimiro y con ayuda de GPT lo modifique un poco para que la regla se cree solo cuando no exista.

Código Delphi [-]

procedure AgregarFirewallFirebird;
var
  Command, CheckCommand: string;
  OutputLines: TStringList;
  ShellOutput: string;
  SecurityAttributes: TSecurityAttributes;
  StdOutRead, StdOutWrite: THandle;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  BytesRead: DWORD;
  Buffer: array[0..255] of AnsiChar;
  i:integer;
begin
  CheckCommand := 'netsh advfirewall firewall show rule name="REGLA 3050"';
  Command := 'netsh advfirewall firewall add rule name="REGLA 3050" dir=in action=allow protocol=TCP localport=3050';
  OutputLines := TStringList.Create;

  try
    ZeroMemory(@SecurityAttributes, SizeOf(SecurityAttributes));
    SecurityAttributes.nLength := SizeOf(SecurityAttributes);
    SecurityAttributes.bInheritHandle := TRUE;

    if not CreatePipe(StdOutRead, StdOutWrite, @SecurityAttributes, 0) then
      RaiseLastOSError;

    try
      ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
      StartupInfo.cb := SizeOf(StartupInfo);
      StartupInfo.hStdOutput := StdOutWrite;
      StartupInfo.hStdError := StdOutWrite;
      StartupInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
      StartupInfo.wShowWindow := SW_HIDE;

      ZeroMemory(@ProcessInfo, SizeOf(ProcessInfo));

      if CreateProcess(nil, PChar('cmd.exe /C ' + CheckCommand), nil, nil, TRUE, CREATE_NO_WINDOW, nil, nil, StartupInfo, ProcessInfo) then
      begin
        CloseHandle(StdOutWrite);

        repeat
          BytesRead := 0;
          ReadFile(StdOutRead, Buffer, SizeOf(Buffer) - 1, BytesRead, nil);
          Buffer[BytesRead] := #0;
          ShellOutput := ShellOutput + String(Buffer);
        until BytesRead = 0;

        WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
        CloseHandle(ProcessInfo.hProcess);
        CloseHandle(ProcessInfo.hThread);
      end;

      OutputLines.Text := ShellOutput;

      i:= Pos('REGLA 3050', OutputLines.Text);
      if i = 0 then
        ShellExecute(0, 'open', 'cmd.exe', PChar('/C ' + Command), nil, SW_HIDE);

    finally
      CloseHandle(StdOutRead);
    end;

  finally
    OutputLines.Free;
  end;
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FireWall Windows Defender - Reglas de Entrada Combat-F2D Seguridad 2 28-06-2019 10:15:29
Crear una consola de administración (msc) para Windows fide_uci API de Windows 5 13-04-2011 19:00:32
añadir una entrada de registro a windows mancurnino Varios 2 18-05-2008 02:12:43
Crear una Aplicacion para Windows CE geraldvlady .NET 3 22-02-2008 23:29:24
como crear fonts para windows? Citlalli Varios 1 24-11-2006 02:30:48


La franja horaria es GMT +2. Ahora son las 03:14:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi