【问题标题】:How to change an executable's properties? (Windows)如何更改可执行文件的属性? (视窗)
【发布时间】:2010-11-04 13:54:58
【问题描述】:

当我创建一个.exe 时,我可以右键单击它并转到属性-> 详细信息。然后我得到一个类似的列表:

File Description | 
Type             | Application
File Version     | 
Product Name     | 
Product Version  |
Copyright        | 
Size             | 18.0 KB
Date Modified    | 6/16/2009 8:23 PM
Language         |

如何更改这些属性? (顺便说一句,有没有办法改变图标?)

【问题讨论】:

  • 这是您正在编译的可执行文件,还是您无权访问其源代码的可执行文件?
  • 这是我已经从 C++ 代码编译的可执行文件。
  • @Keand64:如果你想手动修改,可以使用File -> Open in Visual Studio打开exe文件,轻松修改资源。

标签: c++ windows properties exe executable


【解决方案1】:

如果您使用的是 C/Win32,您可以将类似这样的内容添加到封装在 *.rc(资源)文件中的项目中:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION    0,0,0,2
 PRODUCTVERSION 0,0,0,2
 FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 FILEFLAGS 0x1L
 #else
 FILEFLAGS 0x0L
 #endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
{
    BLOCK "StringFileInfo"
    { 
        BLOCK "040904b0"
        {
            VALUE "Comments",         "comment\0"
            VALUE "CompanyName",      "comment\0"
            VALUE "FileDescription",  "base file\0"
            VALUE "FileVersion",      "0.0.0.2 TP\0"
            VALUE "InternalName",     "testTP\0"
            VALUE "LegalCopyright",   "none\0"
            VALUE "OriginalFilename", "test.exe\0"
            VALUE "ProductName",      "test\0"
            VALUE "ProductVersion",   "0.0.0.2 TP\0"
        } 
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

【讨论】:

  • 您能详细说明一下吗?
  • @Keand64 您可以在 MSDN/VERSIONINFO msdn.microsoft.com/en-us/library/aa381058.aspx 上找到其他信息但是我可以尝试简要描述它在 C 中的工作原理(不确定这是否是 C++ 中的首选方法,但我没有'现在不是关于你在 C++ 中执行此操作)。我将一个资源文件(例如 main.rc)添加到我的项目中,从上面添加代码并进行相应的编辑(参见 msdn)。重新编译后,我的 .exe 文件包含所有信息。如果我在 .NET 中没记错的话,您可以使用 [assembly: AssemblyTitle("title")] 命令执行相同操作。
  • 另外,如果你碰巧在使用 MinGW(就像我一样),而不是使用 rc 来编译你的资源文件,该文件将链接到你的 exe 以提供这些信息,你应该使用 windres:@ 987654322@。 MSDN 链接和该链接应该足以让您将此额外信息添加到您的 EXE。
  • 像这样创建.rc文件后,您可以使用GoRC将其编译为.res文件使用gorc /fo Resources.res Resources.rc。然后,您可以使用Resource Hacker 使用ResHacker -add prog.exe, prog.exe, Resources.res,,, 将其添加到现有的.exe(取自我的回答here
【解决方案2】:

这是简单的文件版本信息资源。对于已经存在的文件,您可以使用任何资源编辑器编辑此信息(例如Resource Hacker,它已过时但仍然很好)。您也可以通过这种方式更改图标。

如果您创建自己的应用程序,那么设置它取决于您使用的工具。例如,在 Visual Studio 中,您必须查看项目属性。

【讨论】:

    【解决方案3】:
    【解决方案4】:

    对于 .NET,谷歌“设置程序集属性”以获取有关可用属性的信息。然后,您可以像这样使用属性...

    using System.Reflection;  // Needed to get to the attributes.
    
    [assembly:AssemblyTitle("My File Description")]
    [etc.]
    

    【讨论】:

    • 这不是答案。提问者想要 C WinAPI 中的解决方案,而不是 .NET C#。
    【解决方案5】:

    如果您使用的是 Visual Studio,则非常简单:

    • 右键单击项目中的“资源文件”文件夹
    • 点击“添加”,然后点击“资源”
    • 从弹出对话框中选择“版本”

    然后您可以双击该文件以在 Visual Studio 中打开它,您将获得一个方便的编辑器来更改值。

    然后您的值会自动链接到 EXE。

    【讨论】:

      【解决方案6】:

      如果您想更改已编译可执行文件上的 FileDescription 或任何其他版本资源字符串,rcedit(一个小型​​开源工具)很容易做到:

      $ rcedit MyApp.exe --set-version-string FileDescription "My Awesome App"
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2016-01-15
      • 2018-02-26
      • 2019-10-26
      • 2012-08-09
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多