如果我们想存储的关键信息,如密码和服务器地址,由Delphi编译器生成的可执行文件中,我们如何能做到这一点,不知道最终可执行文件的大小和二元结构,如在例如文件的结尾?
边注:
该文本存储已经加密; 而在一些计算机的Windows不给访问注册表来写,特别是当用户不是管理员,并有黑客监视注册表变化和智能用户可以找到新的Windows注册表项。
评论
为什么这个问题被向下投票? 这是可以实现的! 不计,如果不感兴趣的大多数人。
我认为,对BIOS和其他固件升级,如卫星电视信号解码器是自我更新。 这怎么可能?
创建一个字符串表资源是一种方式。
创建一个文本文件。 说secretstuff.rc(必须具有.rc扩展名),在它是这样的。
STRINGTABLE
{
1,"This is my encrypted password in say Base64"
}
它编译与BRCC32一个res文件。
包括它与编译器指令相关的代码
{$R secretstuff.res}
之后,你有TResourceStream访问。
如果你想管理它好一点可能是明智的,他们的东西在一个dll,而不是一个exe文件,那么你可以通过提供的dll的新版本更新的东西。
有一个更详细的,另一种目的,但同样原理的例子在这里
您可以使用rc文件把你的数据到最终的.exe文件内自定义资源。 然后,您可以访问该资源在运行时,如用TResourceStream,和解密,并根据需要使用它的内容。 但是,你不能将新数据写入到资源,而.exe文件运行时,如该文件是由OS锁定。 如果你需要编写新的设置,并没有对注册表的写访问,你将不得不使用一个单独的文件来代替。 Windows有预留,用户必须到他们的用户配置文件中写访问特殊文件夹。