【问题标题】:Create file that the application can edit but the user cannot创建应用程序可以编辑但用户不能编辑的文件
【发布时间】:2015-05-26 22:08:55
【问题描述】:

我正在制作一个得分游戏,并且想要保存高分。我想将分数保存在程序可以访问的文件中(当然),但用户不应编辑分数(可能是只读文件)。只读文件的问题是,很明显,它是只读的,所以我不能将高分写入它。 有没有办法创建一个可以由应用程序编辑但不能由用户编辑的文件,还是我必须以某种方式加密文件?

注意:我更喜欢 C (stdio.h) 的文件写入方法。

【问题讨论】:

  • 以某种方式加密文件的内容?并在阅读后检查它是否有效(校验和或其他方法)
  • @Creris "有没有办法创建一个可以由应用程序编辑但不能由用户编辑的文件,或者我是否必须以某种方式加密文件?”
  • 嗯,我不知道,但加密或校验和不是最糟糕的选择。但也许对锁定文件有所了解的人可能会有所帮助(我在该领域并不真正了解)
  • This 应该会有所帮助。

标签: c++ file-io stdio


【解决方案1】:

即使加密也不会阻止您的应用程序以外的其他东西编辑文件。

我可以建议一种选择是简单地以二进制格式存储数据吗?然后,您可以省去实现加密的复杂性,但仍要防止对文件进行任何意外编辑。

您还可以让您的应用程序将文件设置为所有人只读,然后使其仅在使用时可写。同样,这不会阻止其他人更改这些权限,但会防止意外编辑。

【讨论】:

    【解决方案2】:

    在类 Unix 系统上有一种既定的方法可以做到这一点,但我不知道你在其他平台上如何做到这一点。这个想法是为高分文件提供一个特殊组的组ID,通常简称为games。然后将游戏本身设置为games,这样普通用户可以运行游戏,游戏可以编辑高分文件,但用户不能直接写入高分文件。

    有关 Unix 和 Linux 的更多详细信息:https://unix.stackexchange.com/a/59059/14308

    【讨论】:

    • @IInspectable 必须有 一些 个用户能够编辑系统上的每个文件。 OP 似乎想要一个没有加密的解决方案。如果没有加密,这是可以做到的最好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多