方法名称: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. log4.net 日志工具使用

    1. 在应用程序的相同目录下建立: winform :    程序名.exe.config          .(log4net程序,就log4net.exe.config) web:         ...

  2. win7系统64位plsql的设置

    1. Instant Client Downloads for Microsoft Windows (32-bit) 我下载的是: instantclient-basic-win32-11.2.0.1 ...

  3. B - Maya Calendar(第二季水)

    Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old ...

  4. BullseyeCoverage:代码覆盖率。

    1,安装和使用步骤 阅读READER文档.并安装(非常简单,README中有详细指令说明) 配置环境:同样可以阅读相关文档. 增加PATH环境变量.需要注意,此路径需要增加在PATH的最前列.即< ...

  5. MYSQL SET类型字段的SQL查询某个字段保函某个值的查询

    1.column set('hot','crazy','smart')  //column字段(set属性)三个值 2.select * from table where FIND_IN_SET('h ...

  6. Thinkphp excel导入导出

    挺有用处的存一下 1.去PHPexcel 官网下载最新的程序下来 ☞   飞机在这里 我用的是1.78 放在vender 里面 在  function.php 写两个方法 路径当然是这个 ☞Commo ...

  7. 用户登录之cookie信息安全一二事

    大家都知道用户登陆后,用户信息一般会选择保存在cookie里面,因为cookie是保存客户端, 并且cookie可以在客户端用浏览器自由更改,这样将会造成用户cookie存在伪造的危险,从而可能使伪造 ...

  8. Cube(hd1220)

    Cube 点我 Problem Description Cowl is good at solving math problems. One day a friend asked him such a ...

  9. python操作redis-hash

    #!/usr/bin/python #!coding: utf-8 import redis if __name__=="__main__": try: conn=redis.St ...

  10. DataGridView 去掉多余的列

    去掉DataGridView多余的列: this.DataGridView.AutoGenerateColumns = false;