当前位置: 首页 > news >正文

Java获取exe文件详细信息:产品名称,产品版本等

使用Maven项目,在pom.xml文件中注入:

        <dependency><groupId>com.kichik.pecoff4j</groupId><artifactId>pecoff4j</artifactId><version>0.4.1</version></dependency>

程序代码:

import com.kichik.pecoff4j.PE;
import com.kichik.pecoff4j.ResourceDirectory;
import com.kichik.pecoff4j.ResourceEntry;
import com.kichik.pecoff4j.constant.ResourceType;
import com.kichik.pecoff4j.io.DataReader;
import com.kichik.pecoff4j.io.PEParser;
import com.kichik.pecoff4j.resources.StringFileInfo;
import com.kichik.pecoff4j.resources.StringPair;
import com.kichik.pecoff4j.resources.StringTable;
import com.kichik.pecoff4j.resources.VersionInfo;
import com.kichik.pecoff4j.util.ResourceHelper;/*** @version 1.0* @description 测试* @className Test*/
public class Test {public static void main(String[] args) {try {String filePath = "E:\\开发工具\\Docker Desktop Installer.exe";PE pe = PEParser.parse(filePath);ResourceDirectory rd = pe.getImageData().getResourceTable();ResourceEntry[] entries = ResourceHelper.findResources(rd, ResourceType.VERSION_INFO);for (ResourceEntry entry : entries) {byte[] data = entry.getData();VersionInfo version = VersionInfo.read(new DataReader(data));StringFileInfo strings = version.getStringFileInfo();StringTable table = strings.getTables().get(0);for (StringPair pair : table.getStrings()) {System.out.println(pair.getKey() + " = " + pair.getValue());}}} catch (Exception e) {e.printStackTrace();}}
}

输出示例:

CompanyName = Docker Inc.
FileDescription = Docker Desktop Installer
FileVersion = 4.29.0.145265
LegalCopyright = Copyright © 2015-2024 Docker Inc.
OriginalFilename = Docker Desktop Installer.exe
ProductName = Docker Desktop Installer
ProductVersion = 4.29.0.145265
InternalName = Docker Desktop Installer.exe
Assembly Version = 4.29.0

原exe文件详细信息:

http://www.lryc.cn/news/415592.html

相关文章:

  • ORB-SLAM2运行环境搭建
  • Nginx高频核心面试题2
  • 全面提升PDF编辑效率,2024年五大顶级PDF编辑器推荐!
  • 代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
  • 视频美颜SDK与直播美颜插件在实时视频中的应用
  • 【Linux】yum(工具篇)
  • 3GPP入门
  • FFmpeg内存对齐简述
  • 手机号码归属地查询接口如何对接?(一)
  • DDei在线设计器-加载数据
  • NetLLM: Adapting Large Language Models for Networking.
  • 基于Yolov8面部七种表情检测与识别C++模型部署
  • 未确认融资费用含义及会计处理流程
  • Linux配置go程序为service后台开机自启动
  • 汇舟问卷:完成16份调查,挣了40美金,换算后美滋滋
  • Nacos 202407月RCE漏洞(0day)与复现
  • Dynamo修改共享参数绑定的分组——群问题整理005
  • 聚焦汽车软件开发与测试:静态代码扫描、单元测试与集成测试等方面的实践应用
  • 「队列」实现FIFO队列(先进先出队列|queue)的功能 / 手撕数据结构(C++)
  • C++ STL中 `set` 和 `multiset` 简单对比
  • 代码随想录算法训练营Day20 | Leetcode 235 二叉搜索树的最近公共祖先 Leetcode 701 二叉搜索树中的插入操作
  • 第九届世界3D渲染大赛:赛程安排、赛事规则
  • RocketMQ5.0 Consumer Group
  • vulnhub之serial
  • 卷积神经网络(CNN)简单原理与简单代码实现
  • 实时数仓分层架构详解
  • 计算机“八股文”在实际工作中是助力、阻力还是空谈?
  • 新160个crackme - 022-CM_2
  • 在.c和.h 文件里定义数组的区别
  • 使用Step Functions运行AWS Backup时必备的权限要点