【问题标题】:Recommended way of writing to a Hidden/ReadOnly File C#写入隐藏/只读文件 C# 的推荐方式
【发布时间】:2012-02-17 17:44:48
【问题描述】:

我正在尝试写入具有以下属性的文件 - 隐藏和只读。我的进程应该能够写入它,但其他进程具有只读访问权限。

我遵循的程序是:

  1. 检查文件是否存在
  2. 删除文件上的现有属性,即隐藏和只读
  3. 完成文件写入
  4. 将属性(隐藏和只读)应用回文件

我知道这不是使用文件属性和写入隐藏文件的推荐方式。有没有更好的方法来完成我的任务?

提前致谢。

【问题讨论】:

  • 请记住,此过程受竞争条件的影响。

标签: c# recommendation-engine file-writing hidden-files


【解决方案1】:

是的,让您的应用程序模拟一个特殊帐户。向该帐户授予对该文件的文件写入权限,并授予对所有其他帐户的读取权限。

在另一个用户的上下文中运行的最简单方法是按 shift 并右键单击 exe 文件,选择“以不同用户身份运行”。

使用 Windows 服务,您可以从服务属性中更改运行帐户。 Windows 计划任务也是如此。

要“中途”更改流水账,你需要做更多的工作,找一篇关于这个主题的好文章,比如http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C

【讨论】:

  • 感谢您的建议。我是这里的新手,我可以得到任何参考如何做到这一点?该应用程序目前是一个控制台应用程序,稍后应转换为 Windows 服务。您建议的解决方案是否会对以后的应用配置产生影响?谢谢。
  • 您实际上可以在该特殊用户的上下文中运行整个应用程序。通过一个非常简单的 Windows 服务,我更新了我的答案。
【解决方案2】:

正如@Albin 所说,解决访问问题的正确方法是使用文件权限,而不是属性。

如果文件被隐藏是因为您不希望用户能够查看其内容,我建议使用简单(相对轻量级)的加密机制将是比隐藏属性更好的解决方案。

请注意,具有足够权限的用户可以关闭隐藏和只读属性。通常任何人都可以在资源管理器中打开“显示隐藏的文件和文件夹”功能。

【讨论】:

    【解决方案3】:

    无需移除 hidden 属性。不过,我不知道只读的其他解决方案。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2011-01-15
      • 2019-07-20
      相关资源
      最近更新 更多