Delphi 如何获取正在运行的进程列表,包括完整文件路径?

Delphi 如何获取正在运行的进程列表,包括完整文件路径?,delphi,process,delphi-xe7,Delphi,Process,Delphi Xe7,我使用JCL函数JclSysInfo.RunningProcessesList获取正在运行的进程列表。但是,许多返回的进程只包含exe文件名,而其他进程则包含整个文件路径,例如: dopus.exe C:\ProgramFiles\Listary\Listary.exe C:\Program Files(x86)\Direct Folders\df.exe Everything.exe 等等 守则: uses ..., JclSysInfo; procedure GetRunningP

我使用JCL函数
JclSysInfo.RunningProcessesList
获取正在运行的进程列表。但是,许多返回的进程只包含exe文件名,而其他进程则包含整个文件路径,例如:

dopus.exe
C:\ProgramFiles\Listary\Listary.exe
C:\Program Files(x86)\Direct Folders\df.exe
Everything.exe
等等

守则:

uses  
  ..., JclSysInfo;

procedure GetRunningProcesses;  
var  
  RunningProcesses: TStringList;  
begin  
  RunningProcesses := TStringList.Create;  
  try  
    if JclSysInfo.RunningProcessesList(RunningProcesses, True) then  
      CodeSite.Send('RunningProcesses', RunningProcesses);  
  finally  
    RunningProcesses.Free;  
  end;  
end;  

那么,如何获得所有进程都具有完整文件路径的运行进程列表?

“Everyting”运行提升。做同样的事情。@SertacAkyuz已经试过了,同样的结果。把上面的例子复制到一个测试程序中,自己试一下。我已经试过了。当我在高处跑步时,我得到了“一切”的完整路径。但并非所有进程都有完整的路径。当编译为64位时,有更多完整路径。还不是全部。这是关于访问权的。如果JCL可以打开句柄,则使用
GetModuleFileNameEx
。如果有句柄,可以尝试使用
QueryFullProcessImageName
。展望未来。无法打开句柄时,您所能做的不多。
QueryFullProcessImageName()
所需的访问权限也比
GetModuleFileNameEx()所需的权限少。