WindowAPI 详解--OpenProcess打开获得进程句柄
WindowsAPI详解——OpenProcess 打开|获得进程句柄 - []
WindowsAPI详解——OpenProcess 打开|获得进程句柄 - []在中曾使用了OpenProcess来获得进程的句柄,今天就详细介绍下这个函数。
函数原型: HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId)
参数说明: 1、dwDesiredAccess:想拥有的该进程访问权限 PROCESS_ALL_ACCESS //所有能获得的权限 PROCESS_CREATE_PROCESS //需要创建一个进程 PROCESS_CREATE_THREAD //需要创建一个线程 PROCESS_DUP_HANDLE //重复使用DuplicateHandle句柄 PROCESS_QUERY_INFORMATION //获得进程信息的权限,如它的退出代码、优先级 PROCESS_QUERY_LIMITED_INFORMATION /*获得某些信息的权限,如果获得了PROCESS_QUERY_INFORMATION,也拥有PROCESS_QUERY_LIMITED_INFORMATION权限*/ PROCESS_SET_INFORMATION //设置某些信息的权限,如进程优先级 PROCESS_SET_QUOTA //设置内存限制的权限,使用SetProcessWorkingSetSize PROCESS_SUSPEND_RESUME //暂停或恢复进程的权限 PROCESS_TERMINATE //终止一个进程的权限,使用 PROCESS_VM_OPERATION //操作进程内存空间的权限(可用VirtualProtectEx和WriteProcessMemory) PROCESS_VM_READ //读取进程内存空间的权限,可使用ReadProcessMemory PROCESS_VM_WRITE //读取进程内存空间的权限,可使用WriteProcessMemory SYNCHRONIZE //等待进程终止
2、bInheritHandle:表示所得到的进程句柄是否可以被继承
3、dwProcessId:被打开进程的PID
返回值: 如果函数调用成功将返回一个进程句柄值,否则将返回NULL
注意:在使用完所获得的进程句柄后一定要调用CloseHandle(handle)来关闭进程的句柄。
使用的例子在前面的文章中已经写出了。在使用此函数时会发现不能成功获得有些系统进程的句柄,原因是没有权限。解决办法是在调用此函数前让我们的进程得到SeDebugPrivilege权限。
在中曾使用了OpenProcess来获得进程的句柄,今天就详细介绍下这个函数。 函数原型: HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId) 参数说明: 1、dwDesiredAccess:想拥有的该进程访问权限 PROCESS_ALL_ACCESS //所有能获得的权限 PROCESS_CREATE_PROCESS //需要创建一个进程 PROCESS_CREATE_THREAD //需要创建一个线程 PROCESS_DUP_HANDLE //重复使用DuplicateHandle句柄 PROCESS_QUERY_INFORMATION //获得进程信息的权限,如它的退出代码、优先级 PROCESS_QUERY_LIMITED_INFORMATION /*获得某些信息的权限,如果获得了PROCESS_QUERY_INFORMATION,也拥有PROCESS_QUERY_LIMITED_INFORMATION权限*/ PROCESS_SET_INFORMATION //设置某些信息的权限,如进程优先级 PROCESS_SET_QUOTA //设置内存限制的权限,使用SetProcessWorkingSetSize PROCESS_SUSPEND_RESUME //暂停或恢复进程的权限 PROCESS_TERMINATE //终止一个进程的权限,使用 PROCESS_VM_OPERATION //操作进程内存空间的权限(可用VirtualProtectEx和WriteProcessMemory) PROCESS_VM_READ //读取进程内存空间的权限,可使用ReadProcessMemory PROCESS_VM_WRITE //读取进程内存空间的权限,可使用WriteProcessMemory SYNCHRONIZE //等待进程终止 2、bInheritHandle:表示所得到的进程句柄是否可以被继承 3、dwProcessId:被打开进程的PID 返回值: 如果函数调用成功将返回一个进程句柄值,否则将返回NULL 注意:在使用完所获得的进程句柄后一定要调用CloseHandle(handle)来关闭进程的句柄。 使用的例子在前面的文章中已经写出了。在使用此函数时会发现不能成功获得有些系统进程的句柄,原因是没有权限。解决办法是在调用此函数前让我们的进程得到SeDebugPrivilege权限。