使用 JNA 获取正在运行的进程

2023-12-12

我正在尝试获取 Windows 计算机上当前正在运行的所有进程的列表。

我正在尝试通过 JNA 进行 winapi 调用 EnumProcesses -> OpenProcess -> GetModuleBaseNameW -> CloseHandle 它在 OpenProcess 调用时失败。 GetLastError 返回 5 (ERROR_ACCESS_DENIED)。

这是我的代码:

public static final int PROCESS_QUERY_INFORMATION = 0x0400;
public static final int PROCESS_VM_READ = 0x0010;
public static final int PROCESS_VM_WRITE = 0x0020;
public static final int PROCESS_VM_OPERATION = 0x0008;


public interface Psapi extends StdCallLibrary {
    Psapi INSTANCE = (Psapi) Native.loadLibrary("Psapi", Psapi.class);

    boolean EnumProcesses(int[] ProcessIDsOut, int size, int[] BytesReturned);

    DWORD GetModuleBaseNameW(Pointer hProcess, Pointer hModule, byte[] lpBaseName, int nSize);

}

public interface Kernel32 extends StdCallLibrary {
    Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("Kernel32", Kernel32.class);

    Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, int dwProcessId);

    boolean CloseHandle(Pointer hObject);

}

public static void main(String[] args) {
    int[] processlist = new int[1024];
    int[] dummylist = new int[1024];
    Psapi.INSTANCE.EnumProcesses(processlist, 1024, dummylist);

    for (int pid : processlist) {
        System.out.println(pid);
        Pointer ph = Kernel32.INSTANCE.OpenProcess(PROCESS_VM_READ, false, pid);

        try {
            Thread.sleep(1000);
        } catch (Exception ignore) {
        }

        System.err.println(com.sun.jna.platform.win32.Kernel32.INSTANCE.GetLastError()); // <- 5
        System.err.println(ph); // <- null
        if (ph != null) {
            byte[] filename = new byte[512];
            Psapi.INSTANCE.GetModuleBaseNameW(ph, new Pointer(0), filename, 512);

            try {
                Thread.sleep(1000);
            } catch (Exception ignore) {
            }

            System.err.println(Native.toString(filename));
            Kernel32.INSTANCE.CloseHandle(ph);
        }

    }

}

Calling OpenProcess with PROCESS_VM_READ意味着你想读取该进程的内存。为此,您需要SE_DEBUG_PRIVLEGE。您的应用程序没有该权限,这就是您访问被拒绝的原因。

检查 MSDN 文章读取进程内存。有一些关于如何获得该特权的社区内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JNA 获取正在运行的进程 的相关文章

  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • 如果测试用例失败,Selenium Web 驱动程序无法关闭 Firefox 实例

    我各位 我正在使用 junit 和 selenium web 驱动程序 2 28 问题是 如果我运行成功的测试用例 Web 驱动器能够关闭 Firefox 实例 但是当测试用例失败时 Selenium Web 驱动器无法关闭 Firefox
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • left_join 基于 R 中最接近的 LAT_LON

    我试图参考我的原始 data frame 来查找 data frame 中最接近的 LAT LON 的 ID 我已经通过将两个 data frames 合并到一个唯一标识符上并根据distHaverSine函数来自geosphere 现在
  • 如何动态创建实现某些接口的新类并实例化它?

    Java 是否可以在运行时编写新类 对此有何手段 反思 编译器API I can do package tests public class TryReflection02 interface A public static void ma
  • 在vue计算中使用箭头函数不起作用

    我正在学习 Vue 在计算属性中使用箭头函数时遇到问题 我的原始代码工作正常 参见下面的代码片段 new Vue el app data turnRed false turnGreen false turnBlue false comput
  • Laravel 用户名身份验证不区分大小写

    我正在使用 Laravel 手动身份验证 并且需要区分大小写的用户名检查 但 Laravel 默认情况下不区分大小写检查 我在文档中找不到如何更改它 有没有一些简单的方法或者我需要编写自己的身份验证 这是我的控制器
  • 实体框架 Code First 和 Firebird - 外键名称问题

    我正在尝试创建带有 2 个表的新数据库 Districts and Databases 使用 EF 代码优先和这个简单的代码 using var db new FirebirdDBContext connectionString db Da
  • 颤振错误LateInitializationError:字段'@'尚未初始化

    这是预计会导致错误的主程序的中间部分 如果您未在启动屏幕上登录 此代码将转到 MyHomePage 并登录 如果您已登录 它将转到 MainScreen 并切换到应用程序的主屏幕 class SplashScreen extends Sta
  • 为 AngularJS 正确设置 ASP.NET MVC 日期格式

    我正在使用 AngularJS 从 ASP NET 服务器应用程序获取数据并将其显示在客户端 这是我得到的 ProjectID CreatedOn 13241 Date 1338364250000 13411 Date 1338370907
  • 将 SQL Server 排序规则从区分大小写更改为不区分大小写?

    我最近安装了 SQL Server 2008 并且选择了区分大小写的排序规则 我想让整个实例不区分大小写 不适用于该实例中的数据库 如果我更改排序规则是否会影响任何现有数据库 如果真是这样 那么是以哪种方式 您基本上需要再次运行安装来重建m
  • 如何创建多维数组?

    我需要为 iPhone 应用程序保留 90x90 数组数据 我怎样才能保留这些数据 制作多维数组是这个大表的解决方案 或者还有其他解决方案吗 如果矩阵始终为 90x90 那么您应该只使用 C 数组 除非您有特殊需要传递矩阵 使用谓词搜索或需
  • 图表未在 tableViewCell 中绘制

    我正在尝试使用 Charts 3 0 2 较旧的 pod 版本 因为我使用的是 Xcode 8 3 在 swift 3 的 tableViewCell 中绘制随机图表 setChart 函数在视图控制器类中工作 这是我的 TableView
  • JsonConvert.SerializeObject 将自定义类型属性传递给父类型 Equals(object) 方法

    我看到使用 Json NET v6 0 5 序列化一些奇怪的行为 这些对象覆盖 Equals 方法并具有除字符串之外的引用类型属性 public class TestObject public ChildObject CustomTypeP
  • C#应用程序重启不调用程序Main()

    我已经编写了一个适用于用户群的应用程序 我一直在寻找用于当前用户注销的最佳方法 所以我用过Application Restart 很快我发现代码不能正常工作并且Program Main 不再回电 我想知道我的登录表单加载方法 不会执行 登录
  • 将 npm 模块与 ES6 和 npm/bundlers 的未来结合使用

    我使用 ES6 一段时间 对 npm 或 node js 没有经验 我想在我的项目中使用 ES6 来使用一些 npm 模块 我尝试遵循并收到错误 import axios from axios js 请求的模块 axios min js 不
  • Google Pub/Sub 订阅者在一段时间后未收到消息

    我有一个简单的 python 脚本 它使用 Google pubsub 来检测谷歌云存储中的新文件 该脚本只是将新消息添加到另一个线程处理这些消息的队列中 subscriber pubsub SubscriberClient subscri
  • 列出要删除到詹金斯作业中的项目

    我有这个 jenkins 作业 用于将所有项目删除到 AWS ECR 存储库中 pipeline agent any environment AWS ACCOUNT ID 0000000021764 AWS DEFAULT REGION u
  • Java 中人类可读格式的 SNMP EventTime

    我有一个独立的java应用程序 它通过SNMP陷阱接收SNMP消息 我在我的应用程序中使用 SNMP4J 库 在收到的 SNMP 消息中 我需要将十六进制格式的事件时间字段转换为人类可读的格式 通常收到的事件时间字段如下所示 eventTi
  • tkinter 无法在不包含 mainloop 的类中添加照片

    我不熟悉 python 特别是 GUI 问题 我正在尝试添加其他类的图像 我找到了一种添加其他对象但不添加图像的方法 这段代码工作正常 from Tkinter import from PIL import Image ImageTk cl
  • 如何从 NPM 全局卸载 Gulp CLI?

    我通过 npm 在全局安装了以下软件包 email protected github gulpjs gulp cli 4782b9a582ce7cc7e009073705a565b57d235332 我试过像这样卸载它 npm uninst
  • 如何用Python中的图像制作电影

    我目前尝试用图像制作一部电影 但我找不到任何有用的东西 到目前为止 这是我的代码 import time from PIL import ImageGrab x 0 while True try x 1 ImageGrab grab sav
  • 使用 JNA 获取正在运行的进程

    我正在尝试获取 Windows 计算机上当前正在运行的所有进程的列表 我正在尝试通过 JNA 进行 winapi 调用 EnumProcesses gt OpenProcess gt GetModuleBaseNameW gt CloseH