PDA

Ver la Versión Completa : Acceso a exe en ejecución


ElDuc
16-10-2006, 17:15:43
Hola colegas.

Necesito acceder a un archivo.exe que se está ejecutando:


Procedure ..........
Var Fi:File;
begin
AssignFile(Fi,Exe.Text);
{$I-}
Reset(Fi,1);
{$I+}
If IOResult<>0 Then
Begin Beep;ShowMessage('Error de acceso al archivo');Exit;End;
CloseFile(Fi);
end;



Donde Exe es un TEdit y su propiedad Text contiene el nombre del archivo que quiero manipular.

El sistema me da un error (32) y no me deja acceder.

Alguien puede ayudarme?.

Gracias.

seoane
16-10-2006, 17:43:16
Mientras un archivo .exe se esta ejecutando no se puede modificar. Si por el contrario solo lo quieres leer, tienes que indicar que lo abra como solo lectura.


var
F: File;
begin
AssignFile(F,ParamStr(0));
Filemode:= 0; // <-- Indicamos como se debe abrir el archivo
{$I-}
Reset(F);
{$I+}
if IOResult = 0 then
begin

CloseFile(F);
end;
end;

Neftali [Germán.Estévez]
16-10-2006, 17:47:11
No se exactamente qué quieres hacer con un EXE que está en ejecución, pero es normal que es sistema no te deje modificarlo (Reset con valor por defecto).

ElDuc
16-10-2006, 18:03:39
No se exactamente qué quieres hacer con un EXE que está en ejecución, pero es normal que es sistema no te deje modificarlo (Reset con valor por defecto).
Estoy creando un editor hexadecimal de archivos y no sé si se utilizará con archivos exe y si estos estarán en ejecución.

No sabía que no se pueda modificar un exe en ejecución, ya que si está en ejecución, está en la RAM y no necesita el archivo del disco. O eso pensaba yo.

Neftali [Germán.Estévez]
16-10-2006, 18:13:37
No sabía que no se pueda modificar un exe en ejecución, ya que si está en ejecución, está en la RAM y no necesita el archivo del disco. O eso pensaba yo.

Cargalo en memoria (sólo-lectura) como te han indicado y en todo caso a la hora de guardar será cuando obtengas el error. En ese saco visualizas un mensaje del tipo "No se puede guardar, el archivo está bloqueado o en uso." y listo.

ElDuc
16-10-2006, 18:19:16
Gracias colegas.

Me habéis ahorrado mucho tiempo que hubiera gastado intentando hacer algo imposible.