方法名称:OpenProcess
位置:Kernel32.dll
OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
使用外部函数首先需导入命名空间:
 System.Runtime.InteropServices;
 
1.函数原型
 
HANDLE OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId );
 
2.参数
a. 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          //终止一个进程的权限,使用TerminateProcess
         PROCESS_VM_OPERATION       //操作进程内存空间的权限(可用VirtualProtectEx和WriteProcessMemory)
         PROCESS_VM_READ            //读取进程内存空间的权限,可使用ReadProcessMemory
         PROCESS_VM_WRITE           //读取进程内存空间的权限,可使用WriteProcessMemory
         SYNCHRONIZE                //等待进程终止
 
b. bInheritHandle:表示所得到的进程句柄是否可以被继承
c. dwProcessId:被打开进程的PID

3.返回类型

如成功,返回值为指定进程的句柄。integer 或 Intptr

 如失败,返回值为NULL,可调用GetLastError()获得错误代码。

通过一个进程关闭另外一个进程的时候,一般的做法就是枚举系统打开的所用进程的标识符(PID),使用OpenProcess函数获得进程的句柄,该函数可以通过第一个参数来设置句柄的新的访问权限(不清楚句柄是不是和原来的一模一样?有待证明和学习),比如如果打开的句柄不具备终止句柄的权限,直线终止进程操作会失败,返回的错误代码为5(意思为拒绝访问)。通过获得的句柄就可以获得进程名字(通过GetModuleBaseName函数),通过比对进程名字就可以获得我们指定要关闭的进程。注:要使用closeHandle函数来削减进程计数器。

此文档转载于 :http://blog.csdn.net/pxm2525/article/details/39828815

OpenProcess() 函数的更多相关文章

  1. 进程保护原理Hook函数Openprocess

    Win32子系统:                                                                                            ...

  2. windows进程函数试炼

    实践一下windows进程相关函数: 代码如下: // test__getinformation.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&quo ...

  3. CreateProcess函数具体解释

    CreateProcess说明:WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程执行指定的可执行文件. 函数原型:BOOL CreateProcess(    ...

  4. CreateProcess函数详解

    在windows程序设计五中有详解 CreateProcess 说明: WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件. 函数原型: B ...

  5. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  6. 进程枚举之PSAPI函数

    使用PSAPI (Process StatusAPI)函数 这是一种Windows NT/2000下的方法.核心是使用EnumProcesses函数.它的原型如下: BOOL EnumProcesse ...

  7. Windows 反调试技术——OpenProcess 权限过滤 - ObRegisterCallback

    转载: https://blog.xpnsec.com/anti-debug-openprocess/ 看雪翻译:https://bbs.pediy.com/thread-223857.htm 本周我 ...

  8. windows.h系统函数

    转载:https://blog.csdn.net/u010756046/article/details/82432312 // Windows系统函数.cpp: 定义控制台应用程序的入口点.// #i ...

  9. OD附加功能分析

    OD版本:OllyICE v1.10   在从文件菜单选择附加后,OD会在注册一个窗口类后,先创建一个0x138大小的进程表; 再是CreateWindowExA 创建窗口;   00478013 l ...

随机推荐

  1. Foundation--NSArray+NSMutableArray

    C语言中数组只能存放一种类型 OC语言中数组可以存放多种类型,但是只能是对象类型,不可以是基本类型 我们实际中最好在一个数组中只存放一种类型的元素 nil表示数组的结尾,所以我们不能填写值为nil的对 ...

  2. 关于javascript 数组的正态分布排序的一道面试题

    最近几天顶着上海40°的凉爽天气找工作,心里是开心的不要不要的,每次面试都是要坐那里出半天汗才能回过神来,感觉到了这个世界对我深深的爱意,言归正传,面试过程中碰到了几次笔试,其中有这么一道题,由于实际 ...

  3. Spring-----5、Spring容器中的bean

    转载自:http://blog.csdn.net/hekewangzi/article/details/45645831

  4. Spring-----4、使用Spring容器

    转载自:http://blog.csdn.net/hekewangzi/article/details/41349591

  5. Debian 使用杂记(一)

    前几天又冲动的把系统换成Linux了,最开始接触Linux是2010年,那时候买了个本本,预装的是ubuntu8.10,自此知道除了windows原来还有其它操作系统. 不记得什么时候开始知道ubun ...

  6. W - Bitset(第二季水)

    Description Give you a number on base ten,you should output it on base two.(0 < n < 1000)      ...

  7. List小练习

    功能:创建链表节点,删除节点,顺序打印,不改变原结构的情况下分别用STL中的stack实现逆序打印和利用函数递归打印 代码如下: //链表问题struct ListNode {    int m_nV ...

  8. MySQL实用基础笔记

    /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...

  9. 从苹果的appstore谈谈web前端那丝毫的追求

    献上链接:点击进入itunes打开页面,我们先找到App 的logo图比如这个图很简单的一个图标,估计多数人选择的是上传一张处理好圆角,border的图片作为app logo,但问题是苹果觉得,你们每 ...

  10. locate命令的安装

    linux中locate命令可以快速定位我们需要查找的文件,但是在yum中,locate的安装包名为mlocate(yum list | grep locate可以查看),安装方法: yum -y i ...