OpenProcess 函数 (processthreadsapi.h)

打开现有的本地进程对象。

句法

C++
HANDLE OpenProcess(
  DWORD dwDesiredAccess,
  BOOL  bInheritHandle,
  DWORD dwProcessId);

参数

dwDesiredAccess

对进程对象的访问。根据进程的安全描述符检查此访问权限。该参数可以是一个或多个进程访问权限

如果调用者启用了 SeDebugPrivilege 权限,则无论安全描述符的内容如何,都会授予请求的访问权限。

bInheritHandle

如果此值为 TRUE,则此进程创建的进程将继承句柄。否则,进程不会继承这个句柄。

dwProcessId

要打开的本地进程的标识符。

如果指定的进程是系统空闲进程(0x00000000),则函数失败,最后一个错误代码是ERROR_INVALID_PARAMETER。如果指定的进程是系统进程或客户端服务器运行时子系统 (CSRSS) 进程之一,则此功能失败,最后一个错误代码是ERROR_ACCESS_DENIED因为它们的访问限制阻止用户级代码打开它们。

如果您使用GetCurrentProcessId作为此函数的参数,请考虑使用GetCurrentProcess而不是 OpenProcess,以提高性能。

返回值

如果函数成功,则返回值是指定进程的打开句柄。

如果函数失败,则返回值为 NULL。要获取扩展错误信息,请调用GetLastError

评论

要打开另一个本地进程的句柄并获得完全访问权限,您必须启用 SeDebugPrivilege 权限。有关更多信息,请参阅更改令牌中的权限

OpenProcess函数返回的句柄可用于任何需要处理句柄的函数,例如等待函数,是请求了适当的访问权限。

使用完句柄后,请务必使用CloseHandle函数将其关闭。

例子

有关示例,请观看快照和查看过程

要求

要求
   
最低支持客户端 Windows XP [桌面应用程序| UWP 应用程序]
最低支持服务 Windows Server 2003 [桌面应用程序| UWP 应用程序]
目标平台 视窗
标题 processthreadsapi.h(包括Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2、Windows.h)
图书馆 内核32.lib
动态链接库 内核32.dll
(0)

相关推荐