• OpenProcess() 函数


    方法名称: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

  • 相关阅读:
    RabbitMQ 3.8.5版本 windows安装和web管理界面登陆
    RabbitMQ 3.8.5版本 4 种Exchange交换机类型选择,关系RabbitMQ架构选型核心
    maven的settings.xml里设置aliyun镜像以及jdk1.8版本编译
    centos8赋予当前用户rpm文件所有权,并安装rpm文件
    Java8里的HashMap对象lambda遍历方法
    springboot项目application.properties配置文件里自定义日志输出
    kafka2.5.0硬件集群架构图、Topic主题与Partitions分区架构图
    kafka2.5.0分区再均衡监听器java例子
    kafka2.5.0自定义分区器
    kafka2.5.0自定义数据序列化类
  • 原文地址:https://www.cnblogs.com/lfls128/p/4929766.html
Copyright © 2020-2023  润新知