在.NET中保留文件权限

本文关键字:文件 权限 保留 NET | 更新日期: 2023-09-27 18:16:10

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

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

但这行不通。如果我明确地授予"TestUser"对该文件的读取权限,那么在我运行此代码后,TestUser将不再具有读取权限。我做错了什么?

在.NET中保留文件权限

尝试不使用第二个参数

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

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

你试过这样的东西吗(未经测试(?

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

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

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

删除文件,重新创建,然后使用恢复原始权限

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