1

我有一个问题,我们在 temp 中创建一个文件,然后移动到我们的应用程序目录,我们发现移动的文件没有从其新的父文件夹继承权限。

我知道我可以使用 File.Copy (因为创建新文件将继承权限),但出于性能原因,我们不想这样做。

上面引用的站点建议使用 SetNamedSecurityInfo,我可以使用PInvoke 方法访问它。但是我认为可能有一些方法可以使用核心 .NET API 来实现这一点,例如 new FileInfo("C:\Test.txt").GetAccessControl() ,因为上面的文章已经有四年了。

有没有更好的方法来“刷新”文件权限以匹配其父文件夹的权限?

4

1 回答 1

1

经过一些测试,这是我要使用的代码:

FileInfo fi = new FileInfo(myTargetFile);
var acl = fi.GetAccessControl();
var rules = acl.GetAccessRules(true, true, typeof(SecurityIdentifier));

//Remove all existing permissions on the file
foreach (var rule in rules.Cast<FileSystemAccessRule>())
{
  acl.RemoveAccessRule(rule);
}

//Allow inherited permissions on the file
acl.SetAccessRuleProtection(false, false);
fi.SetAccessControl(acl);
于 2010-02-22T11:37:15.913 回答