我当前正在开发一个.NET项目,该项目在运行时使用CSharpCodeProvider生成可执行文件。
我想在内置exe的“属性/详细信息”选项卡中显示一些自定义值,因此我对该主题进行了大量研究。我发现这些值是Windows资源管理器外壳程序从可执行文件中嵌入的资源读取的。下一步是根据specification创建一个.RC文件,在StringFileInfo部分中添加我的自定义值,然后使用来自MS的Resource Compiler将其编译为.RES,然后使用/win32res compiler option将其嵌入到exe中(就像打开项目属性,然后在Visual Studio的“应用程序”选项卡上选择.RES文件。
我认为这将是一个不错的解决方案-不幸的是,事实并非如此。我的Windows 7资源管理器外壳未显示自定义值...我做错了什么?完全可以通过这种方式实现吗?
编辑:我的.RC文件内容是here。
最佳答案
Windows将不会在属性对话框的详细信息窗格中显示您的自定义值。显示的值在shell中进行了硬编码,并且shell不会简单地解析您的资源并寻找它不知道的值。因此,恐怕您尝试做的事情注定会失败。
顺便说一句,您确实需要在资源脚本中以空值终止字符串。所以代替:
VALUE "FileDescription", "Test file"
VALUE "FileVersion", "1.0.0.0"
// etc.
你需要:
VALUE "FileDescription", "Test file\0"
VALUE "FileVersion", "1.0.0.0\0"
// etc.