C++ 程序关闭时禁止用户编辑文本文件

C++ 程序关闭时禁止用户编辑文本文件,c++,windows,data-protection,C++,Windows,Data Protection,我需要写一个程序来处理一个简单的数据库。我的目标是简单地将内存中的所有数据写入一个.txt文件,然后在程序开始时将其全部读入。我希望能够防止用户在程序外编辑txt文件 需要考虑的一些事项: -我希望这个解决方案是可移植的(不是多平台的,只是在windows上,但我不希望有任何安全设置,我必须手动设置或额外的软件依赖) -预防的方法不需要是极端的,我只需要它不是琐碎的打开txt和编辑它自由 我目前的计划是: -我想用程序在读/写时内置的密码屏蔽数据,这样在维护密钥的同时很难轻松编辑。 -我将在读取

我需要写一个程序来处理一个简单的数据库。我的目标是简单地将内存中的所有数据写入一个.txt文件,然后在程序开始时将其全部读入。我希望能够防止用户在程序外编辑txt文件

需要考虑的一些事项: -我希望这个解决方案是可移植的(不是多平台的,只是在windows上,但我不希望有任何安全设置,我必须手动设置或额外的软件依赖) -预防的方法不需要是极端的,我只需要它不是琐碎的打开txt和编辑它自由

我目前的计划是: -我想用程序在读/写时内置的密码屏蔽数据,这样在维护密钥的同时很难轻松编辑。 -我将在读取时间进行数据验证,以确认密码密钥,当然,数据是合法的

我的问题是: -用户可以打开txt并将一个值更改为另一个合法数据

我想要的是: 一些类似于互斥锁的功能,Windows API将支持我可以以便携的方式(在Windows平台中)进行编码,用户只要运行Visual C++可重新分配就可以运行。(但我会接受任何帮助)

感谢阅读,我希望看到一些输入:)

编辑:


我想知道,既然windows平台默认支持zip,那么是否还有其他方法可以写入.zip容器,该容器可以在创建.zip时进行加密,然后在程序中使用密钥进行访问?我认为这将是一个理想的解决方案,如果它是可行的

我甚至不确定这是否可行,因此我的建议是加密要存储在.txt文件中的数据

下面是一个简单的XOR加密算法,如果要解密数据,只需使用加密字符串再次运行该方法

std::string crypt(std::string str, char key) { // If you want to, you can apply proper const-ness
    std::string result = str; // Create a result string
    for (int i = 0; i < result.size(); i++) result[i] = str[i] ^ key; // For every character in the string XOR it with the key
    return result; // Return the result
}
std::string-crypt(std::string-str,char-key){//如果需要,可以应用适当的常量
std::string result=str;//创建一个结果字符串
对于(int i=0;i

我希望这对您有所帮助。

“windows api将支持类似互斥锁的锁定功能…”恐怕没有这种神奇的东西可用。您唯一的选择是基于某种加密。一个选项(不会使内容变得不可读)是在文件中包含一个数字签名,用于验证内容没有更改。问题转移到:签名(或加密)密钥存储在哪里?@user3483187:为什么要这样做?如果用户更改了文件并破坏了程序的功能,那是他自己的错。嗯,我想没有什么神奇的伟大之处:(这是最初的计划,我在考虑“密码”或者将数字签名硬编码到程序中。我不担心任何人解密我的签名或类似的东西,我只是不希望编辑是琐碎的。我很感激这是一个体面的方向。我很可能会这样做,然后读取的每个字段,如果修改,都会被默认,用户不会这也是一个学校项目,所以我想把它做得更好:)这是一种“低俗”的方式,不会阻止所有人。更改文件类型exstention。将其命名为.ful,而不是.txt或类似的名称。将文件标记为隐藏。除非最终用户真的知道要查找什么,否则他们不会知道它的扩展名是错误的。当然,这不是一种安全的方法,也不是最佳实践。