我一直使用.ini
文件来存储我的AutoHotkey脚本生成的信息,之后用FileSetAttrib
隐藏它们。.ini
文件很棒,我唯一担心的是用户发现文件并改变存储在其中的信息。
我记得读过有关.dll
文件和Data Streams
的内容,但我不知道在哪里或如何开始,因为没有那么多“教程”或文档文章。
当您尝试存储用户无法更改的信息时,您会如何处理此问题?
答案 0 :(得分:0)
我没有真正意识到将信息存储在dll文件中只是为了隐藏它。一旦用户查看您的代码(是的,您可以反编译ahk可执行文件),他可以简单地复制更改dll内容所需的代码。除此之外,他可能只是使用资源黑客来修改它 如果您不希望信息在简单文件中,请考虑使用RegWrite和RegRead。如果你真的认为它可以让你到任何地方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)