+1 @CyprUS Просто остерегайтесь проблем с UAC, если вы планируете поддерживать Vista или более позднюю версию.
дал эту функцию, чтобы получить путь к различным сетевым процессам, таким как svchost, Firefox и т. Д. Вот код:
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;
Моя проблема в том, что я не понимаю пути всех процессов. Он отлично работает для определения пути Firefox и других подобных процессов на уровне пользователя. Но для таких процессов, как alg, Svchost, я не могу получить путь этим методом. Я думаю, я должен использовать другой API. Как я могу решить эту проблему?
Я использую Windows XP, 32 бита.