5
私はなど、たSvchostのように、様々なネットワークプロセスのパスを取得するためのFirefoxをこの関数を作成しました。ここのコードです:GetModuleFileNameExことにより、様々なシステムプロセスのパスを取得していない()
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ビットを使用しています。
おかげでたくさんのオペコードが、それはあなたがVista以降をサポートすることを計画している場合、美しく – CyprUS
1 @CyprUSちょうどUACの問題に注意動作します。 –