方法名称: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. excel笔记

    提取单元格中的数字部分 =MID(LOOKUP(1,-(1&MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1/17)),ROW($1:$15)))) ...

  2. jdbc读取数据库图片文件

    package 读取大文件.read; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.I ...

  3. HDU 5793 - A Boring Question

    HDU 5793 - A Boring Question题意: 计算 ( ∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1]  ) % 1000000007=? (C[ ...

  4. Windows下安装PHP扩展及资源下载地址(memcached为例)

    官方下载的php安装包ext目录里以经包含了常用的php扩展,但某些情况下并不能满足我们项目需求,比如memcache扩展就不在官方的php安装包里.这时就需要我们自己去下载安装. 本文列出php官方 ...

  5. 在windows下安装mysql

    本文主要讲mysql解压版在windows下的安装和配置,在官网http://www.mysql.com/下载mysql-cluster-gpl-7.3.7-winx64.zip,然后将mysql解压 ...

  6. jQuery插件的点点滴滴

    说起jQuery插件,很多人的脑海种已经有了一定的雏形,仿佛感觉仅仅就是那样子,事实呢?当你看了Bootstrap.js,品读了slidesjs,观摩了jquery.cycle2.js,不禁发现,原来 ...

  7. webservice跨服务器上传附件

    最近一个项目,用到文件上传功能,本来简单地使用upload控件直接post到服务器保存,简单实现了.后来考虑到分布是部署,静态附件.图片等内容要单独服务器(命名为B服务器,一台,192.168.103 ...

  8. 总结:整理 oracle异常错误处理 .

    5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4  用户定义的异常处理 5.2 异常错误传播 5.2.1 在执行部分引发 ...

  9. Python之路第十天,高级(2)-多线程,多进程,协程

    线程 threading threading模块对象 描述 Thread 表示一个线程的执行对象 Lock 锁原语对象 RLock 可重入锁对象,使单线程可再次获得已经获得了的锁(递归锁定) Cond ...

  10. SQL Server 备份的 8 种方法。

    方法 1. 完整备份 方法 2. 差异备份 方法 3. 部分备份(备份数据库的read_write部分) 方法 4. 文件备份 方法 5. 文件组备份 方法 6. 只复制备份 方法 7. 日志备份 - ...