【问题标题】:How to prevent a user from changing a file manually?如何防止用户手动更改文件?
【发布时间】:2011-01-24 09:42:19
【问题描述】:

在 WPF 应用程序中,我使用 .txt 文件来保存一些信息。应用程序可以从/向 .txt 文件读取和写入数据。一切都很好,但问题是,为了达到这个目的,我必须为应用程序的用户授予对这些文件的写入访问权限,因此他/她可以手动编辑这些文件。

如何在不向用户授予相同级别的权限的情况下为应用程序设置编辑 .txt 文件的访问权限?

已编辑(添加):

得到一些cmets和答案后,我这样提出问题(只是为了让我的问题更清楚,不限于用户访问权限范围):如何防止用户手动更改文件?

【问题讨论】:

    标签: c# .net windows authorization


    【解决方案1】:

    加密或数字签名

    【讨论】:

    • + 1 - 这正是我在 OP 编辑​​后会说的。
    • 是的,我考虑过加密。但只是想知道,是否还有其他方法。 +1 谢谢!
    • 用户可能不知道他们在加密文件中编辑了什么,但他们同样可以破坏它。签名可让您检测损坏情况。将内容保存在用户无法直接访问的数据库中可能会达到预期的目的。
    【解决方案2】:

    我假设您并没有试图阻止用户手动更改文件,您只是想阻止专门为文件分配权限的额外步骤。

    您很可能正在写入位于受保护区域(在引入 UAC 后成为受保护区域)的文件。为避免这种情况,请将文件写入“已批准”区域之一,例如 %APPDATA%。以下是更多列表(假设 C 是您的引导驱动器):

    C:\Users\username\Documents
    C:\Users\username\AppData\Local
    C:\Users\username\AppData\Roaming
    C:\Users\Public\Documents
    C:\ProgramData
    

    This article 有一大堆信息可供您挑选。

    【讨论】:

    • 事实上,我的意思正好相反:我怎样才能阻止用户手动更改文件?对不起我的英语不好。谢谢你的信息,不过还是有用的。+1
    【解决方案3】:

    这可能有点矫枉过正,但您可以创建一个在不同用户帐户上运行的服务,该服务可以编辑文件。然后您的应用程序将使用该服务来访问该文件。

    这样您可以防止不必要的更改和/或记录对文件的每次更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多