You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换到Windows SDK资源编译器后VS_VERSION_INFO不显示在资源管理器

问题原因

Windows系统规定,可执行文件的版本信息资源必须使用数字ID 1才能被资源管理器、GetFileVersionInfo等系统API识别。

  • Borland资源编译器会默认将VS_VERSION_INFO标识符自动映射为数字ID 1,因此编译后的版本资源可被正常识别
  • Windows SDK资源编译器不会做这个隐式转换,如果RC文件没有引入对应的头文件定义,会把VS_VERSION_INFO当做字符串类型的资源名处理,导致系统无法识别该版本资源

解决方法

两种方案二选一即可:

  1. 直接修改RC文件的版本资源定义行
    把verinfo.rc的第一行:
VS_VERSION_INFO VERSIONINFO

替换为:

1 VERSIONINFO

直接指定版本资源的ID为数字1,无需其他额外配置。

  1. 在RC文件开头引入系统头文件
    在verinfo.rc的最顶部添加一行:
#include <winres.h>

winres.h是Windows SDK的标准头文件,其中已经定义了宏VS_VERSION_INFO的值为1,SDK资源编译器引入后会自动将标识符解析为正确的数字ID。使用该方案需要确保Delphi的资源编译器配置中已添加Windows SDK的include目录到搜索路径。

验证方法

修改完成后重新编译项目,用Resource Hacker查看生成的EXE资源,如果版本信息的ID显示为数字1而非字符串VS_VERSION_INFO,即代表修改生效,此时资源管理器即可正常显示版本信息,同时Windows SDK资源编译器对多尺寸图标的支持也不受影响。

内容的提问来源于stack exchange,提问作者delphirules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:01