我有 .Net 桌面应用程序,用户可以从我的网站下载。我想根据每个用户自定义此应用程序。
有没有办法在下载之前修改 exe,只是为了改变一些适合用户下载的字符串?
或者可以通过 URL 将命令行参数传递给这个 exe?
The .exe file needs to be customized for it to behave differently for certain downloads.
跳过下面找到我认为可以忍受的解决方案。
将部分添加到 .EXE 文件 - 不理想。
.exe 文件有一个接一个的部分。您可以添加一个包含您的数据的部分,然后可执行文件将读取该部分。这要求您修改(有权访问)可执行文件的源代码,以便它对数据执行任何有意义的操作。还要熟悉 .exe 文件格式并在 Web 服务器端对其进行修改以及在程序的源代码中使用它有点乏味。
更改 .EXE 文件的资源部分 - 不理想。
可执行文件中存在一个专用的“资源”部分。您可以向其中添加自定义字符串或数据 block 。缺点和第一个一样。
在固定位置覆盖 .EXE 中的数据 - 可通过。
让可执行文件从文件中的固定位置从自身读取数据,在提供 .exe 文件时,该位置会被自定义数据覆盖。需要修改可执行文件的源代码。
将数据附加到 .EXE – Passable。
将数据附加到可执行文件。同样,阅读它并用它做任何特殊的事情都需要可执行文件本身这样做。
☑ 将 .EXE 包装在另一个 .EXE 中并将您的数据附加到其中 - 可以容忍。
创建一个将附加原始可执行文件和自定义数据的程序。然后执行此自定义程序时,它将提取嵌入的可执行文件并使用自定义数据作为参数启动它。
这种捆绑可执行文件也很容易在大多数服务器端(脚本)语言上生成。当请求下载时,服务器会发送 wrapper-exe、原始 exe、自定义数据,当然还有一些静态大小的数据字段,表示这两个数据 block 的大小,以便它可以提取它们。
缺点:需要创建这样的包装程序,除非有人已经拥有。
相关链接:
1.
Best practices to let my web users download custom .exe from my site using PHP
2.
Modifying executable upon download (Like Ninite)
我是一名优秀的程序员,十分优秀!