04 julio 2007

Deshabilitar el cortafuegos de Windows XP

Una de las tareas más frecuentes a las que se enfrenta un programador es la de crear aplicaciones que automaticen procesos de nuestra aplicación tales como subir datos por FTP, conectar con otro motor de bases de datos para enviar, etc.

Y si hay algún programa que pueda interrumpir el proceso de cara a las comunicaciones TCP/IP es el cortafuegos de Windows. Primero añadimos a uses:

uses
Windows, Messages, ..., WinSvc, ShellApi;

Este sería un el procedimiento que detiene el servicio:

procedure DeshabilitarCortafuegosXP;
var
SCM, hService: LongWord;
sStatus: TServiceStatus;
begin
SCM := OpenSCManager( nil, nil, SC_MANAGER_ALL_ACCESS );
hService := OpenService( SCM, PChar( 'SharedAccess' ), SERVICE_ALL_ACCESS );
ControlService( hService, SERVICE_CONTROL_STOP, sStatus );
CloseServiceHandle( hService );
end;

Para volver a activarlo sólo hay que ir al panel de control y ponerlo en marcha de nuevo. Esto no vale para otros cortafuegos (Panda, Norton, etc.)

Pruebas realizadas en Delphi 7.

2 comentarios:

Anónimo dijo...

Hola, primero que nada permiteme felicitarte por tu blog, que tiene muchos articulos que me han sacado de muchas dudas y apuros.

En este momento quiero crear un archivo log para los eventos FTP y TCPIP dentro del cliente y que no llegue a bloquearse la aplicación por el cortafuegos.

Creo que el componente que puede ayudarme es: TIdFTPClient, aunque no se bien como usarlo.

¿Alguna vez has cachado estos eventos, sobre todo de FTP? ¿tendras algún ejemplo?

Estoy usando CodeGear Delphi 2007 para Win32.

Gracias de antemano.

Sergio Téllez: sersate2000@yahoo.com.mx

Administrador dijo...

El componente TIdFTPClient funciona muy bien, pero lo que más mosquea de los componentes Indy es su falta de documentación y que no trabajan en paralelo con la aplicación. Siempre tienes que ejecutarlo dentro de un hilo (Thread).

El único evento que funciona bien para monitorizarlos es FTPWork, el resto a veces funciona y otras veces se lo pasa por el forro.

Cuando termine la serie de artículos dedicada a RAD Studio 2007 entraré otra vez a fondo con los componentes Indy a ver si les saco mas punta.

Saludos.

Publicidad