AutoHotkey - (有效)存储信息

时间:2017-02-28 21:06:18

标签: dll store autohotkey ini

我一直使用.ini文件来存储我的AutoHotkey脚本生成的信息,之后用FileSetAttrib隐藏它们。.ini文件很棒,我唯一担心的是用户发现文件并改变存储在其中的信息。

我记得读过有关.dll文件和Data Streams的内容,但我不知道在哪里或如何开始,因为没有那么多“教程”或文档文章。

当您尝试存储用户无法更改的信息时,您会如何处理此问题?

2 个答案:

答案 0 :(得分:0)

我没有真正意识到将信息存储在dll文件中只是为了隐藏它。一旦用户查看您的代码(是的,您可以反编译ahk可执行文件),他可以简单地复制更改dll内容所需的代码。除此之外,他可能只是使用资源黑客来修改它 如果您不希望信息在简单文件中,请考虑使用RegWriteRegRead。如果你真的认为它可以让你到任何地方store the data encrypted并在阅读它时解密它。

答案 1 :(得分:0)

使用AutoHotkey加密设置也没有多大意义:在这种情况下,努力是不值得的。

我建议简单地将设置编码为不太明显的东西。请记住,如果用户想要更改某些内容,请假设他们能够(取决于他们的资源情况)。像Base64这样的东西应该满足你的需求。

示例脚本

使用此库:base64.ahk

;Say you have a `decodefile()` and `encodefile()` function:

#Include base64.ahk
decodefile(filepath) {
  FileRead, rawData, %filepath%
  decoded := b64Decode(rawData)

  ; save decoded file first, in case of crash
  tempfile := "tempfile.tmp"
  FileDelete, %tempfile%
  FileAppend, %decoded%, %tempfile%

  ; replace original
  FileDelete, %filepath%
  FileMove, %tempfile%, %filepath%
}
encodefile(filepath) {
  FileRead, rawData, %filepath%
  encoded := b64Encode(rawData)

  ; save encoded file first, in case of crash
  tempfile := "tempfile.tmp"
  FileDelete, %tempfile%
  FileAppend, %encoded%, %tempfile%

  ; replace original
  FileDelete, %filepath%
  FileMove, %tempfile%, %filepath%
}

;then you can simply read the ini file, like usual.
settingsfile := "myfile.ini"
decodefile(settingsfile )
IniRead, OutputVar, %settingsfile%, section, key

;on exit, save would look like this
settingsfile := "myfile.ini"
encodefile(settingsfile)