最近在做一个桌面客户端软件,顺手给它加上了在线更新的功能:与服务端的最新软件进行版本比对,如果本地版本低于服务端版本就提示升级。

常规思路是在服务端放个配置文件,里面写入版本号,然后再通过 api 输出。然而这样每次都要手动去修改版本号,难免会手抖将版本号输错。好在,咱们的 php 是万能的[aru_2]因此可以直接用 php 来读取服务器上最新版 exe 的版本号,方便省事可靠![aru_53]

相关代码如下:[aru_47] /**

* PHP 读取 exe\dll 文件版本号

*

* @auth @腾讯电脑管家(https://zhidao.baidu.com/question/246143241010222924.html)

* @param $filename 目标文件

* @return 读取到的版本号

*/

function getFileVersion($filename)

{

$fileversion = '';

$fpFile = @fopen($filename, "rb");

$strFileContent = @fread($fpFile, filesize($filename));

fclose($fpFile);

if($strFileContent)

{

$strTagBefore = 'F\0i\0l\0e\0V\0e\0r\0s\0i\0o\0n\0\0\0\0\0'; // 如果使用这行,读取的是 FileVersion

// $strTagBefore = 'P\0r\0o\0d\0u\0c\0t\0V\0e\0r\0s\0i\0o\0n\0\0'; // 如果使用这行,读取的是 ProductVersion

$strTagAfter = '\0\0';

if (preg_match("/$strTagBefore(.*?)$strTagAfter/", $strFileContent, $arrMatches))

{

if(count($arrMatches) == 2)

{

$fileversion = str_replace("\0", '', $arrMatches[1]);

}

}

}

return $fileversion;

}

网上找到还有一种读取方法,不过只支持 Windows 服务器。留以备用。 /**

* PHP 读取 exe\dll 文件版本号(仅支持Windows服务器)

*

* @auth https://zhidao.baidu.com/question/475823802.html

* @param $filename 目标文件(必须是完整的路径)

* @return 读取到的版本号

*/

function getFileVersion($filename)

{

$fso = new COM('Scripting.FileSystemObject');

return $fso->GetFileVersion($filename);

}

php.exe是什么,PHP读取exe软件版本号相关推荐

  1. Qt学习笔记之——生成exe可执行文件并打包生成安装软件

    之前用MFC生成过安装文件,今天想尝试采用Qt生成的exe文件打包并生成安装软件. 开始我认为比较简单,但是尝试过程中遇到了很多问题.下面一一列出来 首先:我认为,要完成一个软件,应尽可能的使用Rel ...

  2. 文件或目录windows/temp/explorer.exe损坏且无法读取 请运行chkdsk工具

    昨天机房出现了三台机子,开机以后提示:文件或目录windows/temp/explorer.exe损坏且无法读取 请运行chkdsk工具,然后就是蓝屏,无法进入系统,在网上找了很多资料无法解决,重装系 ...

  3. 计算机无法读取exe文件,电脑打不开exe文件怎么解决

    电脑打不开exe文件怎么解决?电脑exe文件怎么打开?exe是可执行文件的文件格式之一,可以在系统中直接运行,不过有些是病毒文件,所以要注意区分一下.有些朋友遇到了电脑打不开exe文件的情况,又不知道 ...

  4. pycharm打包exe时加上窗体及exe桌面图标

    一.pycharm打包exe时加上窗体及exe桌面图标 1.首先添加图片文件转py文件得工具pyrcc 打开File中的Settings 2.按步骤添加工具名称 Name:Pyqrc Program: ...

  5. 中了exe病毒文件夹变exe应用程序解决方法

    文件夹变exe应用程序是一种恶意病毒,专门删除电脑中有用的文件,把自己伪装成一个正常的文件.中了exe病毒文件夹变exe应用程序解决方法恢复步骤如下: 文件夹变exe应用程序是一种恶意病毒,专门删除电 ...

  6. exe编辑器_windows下的EXE文件大揭密

    当我们安装完Windows后,其中的文件到底是执行何种任务?某特定任务又由哪个文件来执行呢? 还有,从"开始"--"程序"--再点击"我所要执行的任务 ...

  7. golang EXE程序添加图标和详细信息(版本号,版权,公司信息等)

    golang EXE程序添加图标和详细信息(版本号,版权,公司信息等) 为什么要添加图标和详细信息 作为桌面程序,有一个图标,显得更正式一些.详细信息有版本号方便做版本识别.算了,编不下去了.不管那么 ...

  8. R语言技巧:读取sas软件的sas格式文件

    前面几期介绍了如下内容: 读取excel文件 对比方法 读取csv格式文件 对比方法read.csv 读取sav格式文件 读取spss 的sav格式文件 这期介绍读取sas软件的sas格式文件,代码如 ...

  9. VC自动生成软件版本号

    VC自动生成软件版本号 flyfish 目的: 软件的版本有主版本号.子版本号.修正版本号.编译版本号 其中编译版本号与SVN服务器的版本号(Revision)自动同步. 环境 需要在本机安装Tort ...

最新文章

  1. [Codeforces 10E] Greedy Change
  2. 一起聊聊Microsoft.Extensions.DependencyInjection
  3. mysql sql wait 写法_有关SQL语句写法注意的那些事情(原创整理)
  4. 知识图谱论文阅读(二十)【WWW2020】Heterogeneous Graph Transformer
  5. github果然强大
  6. 前端到底是自学好还是培训好?
  7. 心跳监测器 IHeartBeatChecker
  8. 李兴华java开发百度网盘_魔乐科技MLDN-李兴华老师零基础学Java系列教程 百度网盘...
  9. matlab中imcrop函数的具体使用
  10. 国科大学习资料--人工智能原理与算法-2020年期末考试题解析(学长整理)
  11. 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]
  12. linux命令行自制屏保,Linux终端界面屏保
  13. 查询快递 教你一个方法按照物流途径城市筛选签收地
  14. 离开华为换种生活,它不香吗?
  15. sql server存数据时报错“解索引超出了数组界限的问题”
  16. 中国历史上的著名武将有哪些?
  17. JSON parse error: Cannot construct instance of “xxx“(although at least one Creator exists)
  18. PPT怎么一键导出所有图片
  19. java插件升级_java – 将插件从1.6升级到1.7
  20. Go获取n天前或后的日期、日期转秒时间戳、计算两个日期之间的天数差

热门文章

  1. star ccm+ 11.02安装
  2. git上传分支的原理_git系列教程四:分支和分支管理
  3. 2019,韶华易逝,从新出发!
  4. Zemax学习笔记(13)- ZEMAX 中的玻璃库波长范围的使用范围
  5. 一对多分页的SQL应该怎么写?
  6. 2021 CFA Program Level 1一级二级三级教材 原版书
  7. 惠普服务器修改raid,惠普笔记本电脑 - 将笔记本电脑存储控制器配置从 RAID 改为 IDE,然后再改回 RAID 会导致蓝屏事件...
  8. python实现图书管理系统BookManager类
  9. “呆呆”beta版发布——欢迎围观
  10. 图片加水印 java_Java使用Thumbnailator给图片加水印