在.NET中保留文件权限

时间:2011-11-30 21:10:35

标签: c# .net permissions file-permissions access-control

我有一个经常删除并重新创建的文件(我无法控制此行为)。但是,重新创建文件时,它不会保留删除之前的权限。所以我写了这段代码来试图解决这个问题:

var access = File.GetAccessControl(filepath, AccessControlSections.Access);
deleteAndRecreate(filepath);
File.SetAccessControl(filepath, access);

但这不起作用。如果我明确赋予文件“TestUser”读取权限,那么在运行此代码后,TestUser将不再具有读取权限。我做错了什么?

3 个答案:

答案 0 :(得分:0)

不使用第二个参数

尝试
var access = File.GetAccessControl(filepath); 
deleteAndRecreate(filepath); 
File.SetAccessControl(filepath, access); 

答案 1 :(得分:0)

我的猜测是,一旦文件被删除,FileSecurity返回的GetAccessControl对象将不再有效。

您是否尝试过这样的事情(未经测试)?

deleteAndRecreate(filepath);
FileSecurity access = File.GetAccessControl(filepath, AccessControlSections.Access);
access.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));

(如果这种通用方法有效,您可以从之前创建的access对象中获取访问规则并重用它们。它们可能通过删除保持有效。)

答案 2 :(得分:-1)

//Get current attributes
var fileAttributes = File.GetAttributes(filePath);

删除文件,重新创建文件,然后使用以下命令恢复原始权限:

//Restore the file's original attributes
File.SetAttributes(filePath, fileAttributes);