我有一个经常删除并重新创建的文件(我无法控制此行为)。但是,重新创建文件时,它不会保留删除之前的权限。所以我写了这段代码来试图解决这个问题:
var access = File.GetAccessControl(filepath, AccessControlSections.Access);
deleteAndRecreate(filepath);
File.SetAccessControl(filepath, access);
但这不起作用。如果我明确赋予文件“TestUser”读取权限,那么在运行此代码后,TestUser将不再具有读取权限。我做错了什么?
答案 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);