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)