【问题标题】:Lock file using C#使用 C# 锁定文件
【发布时间】:2014-02-09 16:20:26
【问题描述】:

我看到了这个问题:Prevent a user from deleting, moving or renaming a file,但它不符合我的需求。
如果我理解正确,只要打开该流,文件就会被锁定。

我想在我的计算机中的某个文件夹中列出一个无法编辑或重命名的文件。
防止编辑很容易 - 我只设置了System.IO.FileAttributes.ReadOnly(效果很好)

现在我需要防止重命名文件和目录

【问题讨论】:

  • 您可以简单地使用您正在使用的任何文件系统中内置的权限系统。 (这就是它的用途)
  • readonly 仍然允许文件重命名,另外我需要确保文件夹也不能重命名
  • 我不是在谈论将文件标记为“只读”,我是在谈论完全拒绝对特定用户、组或容器的访问
  • @TimothyGroote 你能提供一个代码/功能/属性来做到这一点吗?或者至少给我一个关键字来搜索

标签: c# file attributes filesystems rename


【解决方案1】:

我的理解是重命名或移动都是删除操作的核心。你可以尝试捕捉和预防。我不确定你是否真的可以做你想做的事,似乎没有标志。

http://msdn.microsoft.com/en-us/library/system.io.fileattributes(v=vs.110).aspx

这可能会有所帮助。 How to prevent or intercept a call to Directory.Delete(path, true)

【讨论】:

  • JFI:在一个文件系统中重命名是一项单独的操作,而不是删除。
  • @EugeneMayevski'EldoSCorp 你能扩展一下吗?当您说文件系统时,您是指路径/文件夹吗? NTFS和FAT都这样吗?我知道 NTFS 是一个日志系统,所以这是有道理的,但 FAT 不是它在这个原因中的工作方式。不反对只是想了解更多。
  • 文件系统驱动程序接收来自操作系统的不同请求以执行各种操作。存在“打开文件”、“写入文件”、“删除文件”等操作。还有一个“移动文件”操作,其中旧文件名和新文件名是操作的参数。文件名包含路径,但路径必须在同一个文件系统中。 IE。如果您将文件 \PathA\File1 重命名为文件 \PathB\File2,则没有删除 File1 的命令 - 它已重命名/移动而不是删除。
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2021-08-14
  • 2018-04-19
  • 1970-01-01
相关资源
最近更新 更多