在.NET中保留文件权限
本文关键字:文件 权限 保留 NET | 更新日期: 2023-09-27 18:16:10
我有一个经常被删除和重新创建的文件(我无法控制这种行为(。但是,当重新创建文件时,它不会保留删除之前的权限。所以我写了这个代码试图解决这个问题:
var access = File.GetAccessControl(filepath, AccessControlSections.Access);
deleteAndRecreate(filepath);
File.SetAccessControl(filepath, access);
但这行不通。如果我明确地授予"TestUser"对该文件的读取权限,那么在我运行此代码后,TestUser将不再具有读取权限。我做错了什么?
尝试不使用第二个参数
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);