有没有办法在执行时追加/删除资源到二进制文件?

时间:2015-07-29 14:56:13

标签: go

是否可以在执行时将ressource文件附加/删除到二进制文件?

我有一个用go编写的应用程序,它保存/搜索数据库文件中的数据,我希望这个数据库文件嵌入到二进制文件中,并由应用程序本身更新。

这样,应用程序将自包含其数据库。

2 个答案:

答案 0 :(得分:2)

从技术上讲,这是可能的,但这是一个坏主意。您的应用程序可以由没有二进制文件写权限的用户运行。

如果您正在谈论便携式应用程序,您最好的选择可能是使用二进制文件所在目录中的文件,否则 - 根据您运行的操作系统的惯例使用用户的主目录。您可以使用os/user包来查找主目录。

答案 1 :(得分:2)

修改可执行文件,这通常是非常糟糕的主意

我脑海中浮现出几个问题,例如:

  1. 当前用户是否有足够的权限?
  2. 执行期间文件是否已锁定?
  3. 应用程序的多个运行实例怎么样?
  4. 即使你设法做到这一点,想想反病毒和防火墙应用程序会对它说什么:大多数人在检测到变化时会标记可执行文件和/或包含它,或拒绝运行它,或者某些可能甚至删除它。这是正确的,因为这是许多病毒所做的:修改现有的可执行文件。

    此外,病毒扫描程序数据库还会根据其内容的哈希值来维护报告文件(其内容)的报告。修改可执行文件自然会更改文件内容哈希,从而使这些数据库的文件未知/可疑。

    如上所述,只需在单独的文件中写入/缓存数据,最好是在用户的主文件夹或应用程序文件夹中(可执行文件旁边,可选地在子文件夹中)。或者使缓存文件/文件夹成为可更改的选项(命令行标志)。