ResHacker 用命令行方式修改 windows PE文件版本号
由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集成环境打包是不太友好的 因为版本号是由詹金斯自动生成拼接传入的,而打包环境意味着代码已经封闭了不在修改了如果去改的话 就会存在一定的风险。这就需要在编译完成后通过其它工具用命令行方式修改版本号,经网上查找资料发现 ResHacker可以修改版本号,但是资料更多的是关于GUI方式,很少有命令行方式的资料。下面将介绍笔者经过实践得出的一种可行的用ResHacker 命令行方式修改 windows PE文件版本号。
1、官网下载:http://www.angusj.com/resourcehacker/#download
2、傻瓜式安装后启动程序打开GUI,选择某个PE文件查看版本信息
3、修改版本号发布者等信息, 并将修改后的信息拷贝 保存到临时文件temp.rc
4、执行命令行编译生成res文件
ResourceHacker.exe -open temp.rc -save temp.res -action compile -log console
-open 表示 输入文件
-save 表示输出文件
-action表示执行的动作
-log 输出日志方式
这些在官网上都有介绍的
5、执行addoverwrite覆盖写入命令写入版本号
ResourceHacker.exe -open old.exe -res temp.res -action addoverwrite -mask VERSIONINFO -log console -save new.exe
附件 修改版本号脚本 .bat
set RC_FILE_PATH=D:\temp.rc
set RES_FILE_PATH=D:\temp.res
DEL /q /F %RC_FILE_PATH%
DEL /q /F %RES_FILE_PATH%
set MAJOR_VERSION=2
set MINOR_VERSION=8
set MICRO_VERSION=0
set BUILD_VERSION=1
set BUILD_FULL_VERSION=%MAJOR_VERSION%,%MINOR_VERSION%,%MICRO_VERSION%,%BUILD_VERSION%
set BUILD_FULL_VERSION_STR=%MAJOR_VERSION%.%MINOR_VERSION%.%MICRO_VERSION%.%BUILD_VERSION%
echo.>>%RC_FILE_PATH%
echo 1 VERSIONINFO>>%RC_FILE_PATH%
echo FILEVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%
echo PRODUCTVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%
echo FILEOS 0x4>>%RC_FILE_PATH%
echo FILETYPE 0x2>>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo BLOCK "StringFileInfo">>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo BLOCK "080404B0">>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo VALUE "FileDescription", "xxxx">>%RC_FILE_PATH%
echo VALUE "LegalCopyright", "Copyright (C) xxxxxk co,ltd 2018-2020">>%RC_FILE_PATH%
echo VALUE "OriginalFilename", "xxxx.exe">>%RC_FILE_PATH%
echo VALUE "ProductName", "LimiTeacher">>%RC_FILE_PATH%
echo VALUE "ProductVersion", "%BUILD_FULL_VERSION_STR%">>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo.>>%RC_FILE_PATH%
echo BLOCK "VarFileInfo" >>%RC_FILE_PATH%
echo { >>%RC_FILE_PATH%
echo VALUE "Translation", 0x0804 0x04B0 >>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo } >>%RC_FILE_PATH%
set PATH=C:\Program Files (x86)\Resource Hacker;%PATH%
cd C:\Program Files (x86)\Resource Hacker
ResourceHacker.exe -open %RC_FILE_PATH% -save %RES_FILE_PATH% -action compile -log console
ResourceHacker.exe -open old.exe -res %RES_FILE_PATH% -action addoverwrite -mask VERSIONINFO -log console -save new.exe
参考博客连接 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409669
ResHacker 用命令行方式修改 windows PE文件版本号的更多相关文章
- 批处理脚本命令行方式关闭Windows服务
对于一些不常用的Windows Services,可以通过设置其启动类型为"禁用"而将其关闭.这种关闭方式是长期性的,电脑重启之后仍然起作用. 有时候希望在批处理脚本里通过命令行方 ...
- Sqlserver 命令行方式修改 用户密码的方法
1. 之前写了一个 可以使用 ssms 的方式修改密码的情况 2. 还有办法是执行命令 exec sp_password null,'newpassword','sa' # sa 是用户名 newp ...
- [转帖]Windows 使用netsh 命令行方式处理 windows防火墙的方法
Windows防火墙命令行手册 https://blog.csdn.net/mystudyblog0507/article/details/79617629 简介 netsh advfirewall ...
- 命令行方式调用winrar对文件夹进行zip压缩示例代码
调用winRAR进行压缩 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
- winscp以命令行方式同步服务器数据到PC机磁盘上
目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...
- linux命令进阶及和windows进行文件传输的所有方式
1.图例 ------>原图出处 2. 结构图 根目录说明 3.linux相关命令 cd(change directory切换目录): cd /. 进入根目录 cd .. 返回上一次目录 cd ...
- 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...
- iOS:命令行方式使用OSChina托管私有代码
一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...
随机推荐
- STM32入门系列-GPIO工作模式及LED电路原理
GPIO工作模式 由于GPIO内部的结构关系,决定了GPIO可配置成以下几种模式. 输入模式 在输入模式时,施密特触发器打开,输出被禁止.可通过输入数据寄存器GPIOx_IDR读取I/O状态.输入模式 ...
- 9_Palindrome Number
9.Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome when it ...
- 微信小程序获取请求数据
<%@ WebHandler Language="C#" Class="CodeTest" %> using System; using Syste ...
- Mybatis的二级缓存、使用Redis做二级缓存
目录 什么是二级缓存? 1. 开启二级缓存 如何使用二级缓存: userCache和flushCache 2. 使用Redis实现二级缓存 如何使用 3. Redis二级缓存源码分析 什么是二级缓存? ...
- 实验3ss
1.实验任务1 #include <math.h> #include <stdio.h> int main() { float a,b,c,x1,x2; float delta ...
- Spring Boot 创建 Docker 镜像
随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...
- kafak ack应答机制
ack 应答机制 对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失, 所以没必要等 ISR 中的 follower 全部接收成功. 所以 Kafka 为用户提供了三种可靠性级 ...
- python之《线程与进程》
多线程的应用场景 不适用cpu操作密集型任务, 适合io操作密集型任务 同一进程中的数据是互通的,因为python多线程是假多线程,我们要用到多核就需要开多个进程来实现,但是坏处是数据不能互通 线程: ...
- hibernate 基础知识
1.hibernate的配置文件,一般放在classpath的根目录下,默认命名为hibernate.cfg.xml,代码例子如下: <!DOCTYPE hibernate-configurat ...
- 利用s3-test进行ceph的接口兼容性测试
前言 ceph的rgw能够提供一个兼容性的s3的接口,既然是兼容性,当然不可能是所有接口都会兼容,那么我们需要有一个工具来进行接口的验证以及测试,这个在其他测试工具里面有类似的posix接口验证工具, ...