如何获得升级过程的流程处理?

时间:2016-01-29 13:03:36

标签: delphi winapi delphi-10-seattle

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

uses
  Winapi.Windows;

var
  hp: THandle;
begin
    hp := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID);

这适用于32位和64位的所有进程。

不幸的是,它不适用于ELEVATED PROCESSES,它会返回 0

那么如何才能获得升级过程的流程处理?

1 个答案:

答案 0 :(得分:3)

简单的答案是你不能这样做。系统说没有。当您致电GetLastError时,返回的值将为ERROR_ACCESS_DENIED。您的流程没有足够的权利获得PROCESS_QUERY_INFORMATION升级的流程。

如果您的流程提升时调用OpenProcess,则会成功。

或者,您可能能够获得比PROCESS_QUERY_INFORMATION更低的权利。这很难判断,因为我们不知道你对这个过程句柄的意思。根据您的评论,您将GetProcessImageFileName传递PROCESS_QUERY_INFORMATION,因为需要PROCESS_QUERY_LIMITED_INFORMATIONcout << pointer2 << endl; cout << pointer << endl;