假设我收到了用户模式应用程序中进程的句柄。我不知道它是从 CrateProcess 还是从 OpenProcess 调用返回的。要使用此句柄调用 GetProcessTimes,我需要 PROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION 访问权限。最简单的方法是调用 DuplicateHandle(使用 PROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION),但它又需要 PROCESS_DUP_HANDLE 访问权限。因此,为了减少失败的机会,我可以在句柄上调用 GetProcessTimes,如果成功则一切正常,否则我使用所需的访问权限复制句柄并再次调用 GetProcessTimes。
我想知道在我第一次调用 GetProcessTimes 以进一步减少开销之前,是否可以检查给定进程是否具有 ROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION 访问权限。在 msdn 上环顾四周,我想我应该使用 GetSecurityInfo?但我没有找到可以使用的示例。
谢谢你