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

标签 go

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

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

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

最佳答案

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

有几个问题突然出现在我的脑海中,例如:

  1. 当前用户是否有足够的权限?
  2. 文件在执行过程中是否被锁定?
  3. 应用程序的多个运行实例如何?

即使您做到了这一点,想想防病毒和防火墙应用程序会对它说什么:大多数当它们检测到更改时会标记可执行文件和/或包含它,或者拒绝运行它,或者有些可能甚至删除它。这是正确的,因为这是许多病毒所做的:修改现有的可执行文件。

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

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

关于go - 有没有办法在执行时将资源附加/删除到二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31704083/

相关文章:

csv - 从 Go 中的 csv 文件读取只打印最后一行

go - 用子结构初始化结构

go - 接口(interface)提供哪些保证?

recursion - 在 Go 中使用递归引用

go - 默认的 goroutine 是什么?

json - 嵌套 JSON 中的相同结构

go - 动态类型断言 Golang

performance - 简单的 golang http rest 服务在负载下挂起

security - 非特权执行从头开始

go - Golang填充功能无法正常工作