如何获取提升的进程的进程句柄



使用 Delphi 10 Seattle,我使用以下代码来获取进程的句柄:

uses
  Winapi.Windows;
var
  hp: THandle;
begin
    hp := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID);

这适用于所有进程,包括 32 位和 64 位。

不幸的是,它

不适用于提升的进程,在那里它返回 0

那么,如何获取提升的进程的进程句柄呢?

简单的答案是你不能这样做。系统说没有。调用GetLastError时返回的值将为ERROR_ACCESS_DENIED 。您的进程没有足够的权限来获得对提升流程PROCESS_QUERY_INFORMATION

如果您在流程提升时调用OpenProcess,您将成功。

或者,您可能能够以低于PROCESS_QUERY_INFORMATION的权利过日子。这很难判断,因为我们不知道你的意思是用这个进程句柄做什么。根据您的意见,您将传递句柄GetProcessImageFileName该句柄被记录为需要PROCESS_QUERY_INFORMATIONPROCESS_QUERY_LIMITED_INFORMATION

最新更新