【问题标题】:C# make file readonly [closed]C#使文件只读[关闭]
【发布时间】:2020-01-06 08:59:09
【问题描述】:

我创建了一个 Outlook 加载项,用于在发送电子邮件之前检查电子邮件中是否存在某些禁止字词。它只是将包含电子邮件的字符串与 .CSV 文件中存在的单词进行比较。

我不介意人们能够阅读该 .CSV 文件,但我不希望他们能够修改它,除非他们使用 Outlook 加载项进行修改。

为此,我想根据用户更改文件的属性。使用插件时,管理员用户将获得读/写权限,而其他人只能读取它。但是,在插件之外,我希望该文件对所有人都是只读的。

我尝试使用File.SetAttributes("myPath", FileAttributes.ReadOnly);,但是用户可以简单地进入文件属性,取消选中“只读”选项,他可以做任何他想做的事情......我可以避免这种情况吗?有没有比只读模式更聪明的选择?

【问题讨论】:

  • Imo 这不是一个真正的编程问题:这是关于使用 Windows 的安全属性来锁定特定用户对文件的特定访问权限。如果本地用户具有管理权限,那么您几乎无法阻止他们修改文件。
  • 程序没有权限,用户有。这是 Windows 安全模型的基础。
  • @Martin 我想我可以例如从选项中以图形方式显示的属性中删除“只读”选项,以使其不那么明显。无论如何,对不起,我没有意识到我的问题是题外话,不过感谢您的快速回复! :)

标签: c# readonly


【解决方案1】:

您可以加密存储的文件。 要执行任何操作,应用程序可以在内存中对其进行解密。除非使用该应用程序,否则用户将无法修改。强制用户修改会损坏文件并使其无法使用。

【讨论】:

  • 是的,但只有当任何用户在没有他的应用程序的情况下访问文件时,OP 才希望文件可读且处于只读模式
  • 同意,但如果最终目标是阻止用户在应用程序之外修改它,这可能会有所帮助。
  • 我同意您的解决方案,将文件加密为不可读,这样只有您的应用程序才能读取文件的内容。
  • 我考虑过加密,但用户仍然可以修改文件并搞砸一切。谢谢你的输入! :)
  • 如果这是您想要的路线,您有很多选择: 1. 您可以使用一些非描述性的文件名隐藏文件。 2.将损坏的文件替换为带有基本单词的硬编码文件。
猜你喜欢
  • 2013-05-12
  • 2022-08-04
  • 2020-09-15
  • 2017-08-17
  • 1970-01-01
  • 2013-05-23
  • 2017-05-24
  • 2016-12-30
  • 2023-03-05
相关资源
最近更新 更多