PDA

Ver la Versión Completa : Obtener la ruta de un ejecutable que esta en la lista de procesos para terminarlo


JuanErasmo
26-06-2007, 00:12:10
Hola amigos,,,,
tengo un grave problema,,,,

en una maquina muyyy remota, estoy ejecutando un software que se esta corriendo invisible ( solo se ve en la lista de procesos) y solo conozco el nombre del ejecutable, no se en que ruta lo instalo el cliente,
es posible averiguar la ruta en que esta, para poder terminar ese proceso?

Gracias!

DarkMan
26-06-2007, 00:33:16
Bueno, tienes varias opciones para hacer lo que pides:
1. Conociendo el nombre del ejecutable puedes realizar una búsqueda por el disco duro hasta dar con el archivo.
2. Sabiendo que esta listado en los procesos, puedes obtener dicha lista y de ahí extraer la ruta del proceso.

Todo ello lo tienes ya en el foro, solo necesitas usar la búsqueda y podrás dar con la respuesta. Aunque si yo tuviese que elegir, elegiría la segunda opción pues seguramente sea más rápida.

Por supuesto puede haber más opciones pero estas son las que se me han ocurrido.

Y sobre terminar el proceso, tambien esta tratado en el foro, asi que te recomiendo que dediques un poco de tiempo a su búsqueda.

juanlaplata
27-06-2007, 15:29:10
Bueno con esta funcion creo que podras cerrar el proceso.
uses windows;
var valor:integer;
...
valor:=FindWindow(nil,'Nombre del Proceso');
If (valor<>0) then SendMessage(valor,WM_CLOSE,0,0);

rounin
27-06-2007, 17:24:50
No necesitas la ruta para terminar un proceso, solo Process Id


// uses TlHelp32;
function GetProcessIdByName(const ExeName: string): Integer;
var PE: TProcessEntry32;
hSS: THandle;
s: string;
begin
Result := 0;
hSS := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, GetCurrentProcessId);
PE.dwSize := SizeOf(PE);
Process32First(hSS, PE);
repeat
s := PE.szExeFile;
if CompareText(s, ExeName) = 0 then
begin
Result := PE.th32ProcessID;
Break;
end;
until not Process32Next(hSS, PE);
CloseHandle(hSS);
end;
procedure KillProcessById(ProcessId: Integer);
var h: THandle;
begin
h := OpenProcess(PROCESS_TERMINATE, False, ProcessId);
if h = 0 then Exit;
TerminateProcess(h, 0);
CloseHandle(h);
end;
function GetFullExePathById(ProcessId: Integer): string;
var ME: TModuleEntry32;
hSS: THandle;
s: string;
begin
Result := '';
hSS := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, ProcessId);
ME.dwSize := SizeOf(ME);
Module32First(hSS, ME);
repeat
s := LowerCase(ME.szExePath);
if Pos('.exe', s) <> 0 then
begin
Result := s;
Break;
end;
until not Module32Next(hSS, ME);
CloseHandle(hSS);
end;