0

我正在开发一个类似于 Dropbox 但在本地为我的业务工作的程序。我设置了一些用户无法写入某些文件/目录但他们仍然可以在本地写入的地方。这不是一个大问题,我可以重新下载文件/目录,但如果我可以锁定它会很好。(尽管他们仍然需要阅读)

4

2 回答 2

2

我可以想到几个解决方案:

  • 让您的应用程序保持文件以只读方式打开。如果文件数量变大,这可能会导致一些问题,您可能会遇到一些天花板,无论是在内存中还是在处理限制中。

    有关句柄限制的一些信息,请参阅这个优秀的 technet 博客http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx

  • 使用 NTFS 权限。如果您以其他用户身份运行您的应用程序,获取文件的所有权并允许其他用户只读访问,它应该会有所帮助。由于您处于业务环境中,因此您可能具有将应用程序作为服务运行或在启动时运行的那种级别的控制。

    关于 NTFS 权限的一篇不错的 SO 帖子 在 C#.NET 中设置 NTFS 权限

于 2012-11-16T01:23:48.993 回答
1

我建议您使用 File.SetAttributes 方法设置只读属性。

要将文件设置为只读:

File.SetAttributes(@"C:\Users\Owner\Desktop\file.txt", FileAttributes.ReadOnly);

要将文件恢复正常:

File.SetAttributes(@"C:\Users\Owner\Desktop\file.txt", FileAttributes.Normal);

您可以检查文件是否为只读文件,然后抛出错误:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(@"C:\Users\Owner\Desktop\file.txt");
if (fileInfo.IsReadOnly)
{
    //...Alert user that this file cannot be deleted
}
else
{
    //... Delete the file here
}
于 2012-11-16T01:38:53.587 回答