Não obtendo o caminho de vários processos do sistema por GetModuleFileNameEx ()
Criei esta função para obter o caminho de vários processos de rede, como svchost, Firefox, etc. Aqui está o código:
function GetProcessPath(var pId:Integer):String;
var
Handle: THandle;
begin
Result := '';
try
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pID);
if Handle <> 0 then
begin
try
SetLength(Result, MAX_PATH);
if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then
SetLength(Result, StrLen(PChar(Result)))
else
Result := '';
finally
CloseHandle(Handle);
end;
end;
except
on E:Exception do
ShowMessage(E.ClassName + ':' + E.Message);
end;
end;
Meu problema é que não entendo o caminho de todos os processos. Ele funciona bem para obter o caminho do Firefox e outros processos similares no nível do usuário. Mas para processos como o alg, Svchost, não consigo encontrar o caminho por esse método. Meu palpite é que devo usar uma API diferente. Como posso resolver este problema
Estou usando o Windows XP de 32 bit