C# 应用目标权限在同一卷上移动文件夹

C# 应用目标权限在同一卷上移动文件夹,c#,filesystems,C#,Filesystems,使用.NET DirectoryInfo.MoveTo将同一卷上的目录(例如.c:从一个文件夹复制到另一个文件夹)时,将保留访问控制:换句话说,目标具有与源相同的安全性,并且不会继承其新父文件夹之一 我希望能够移动文件夹及其内容,但将权限替换为文件夹的副本 有没有一种简单的方法可以在C中实现这一点 const string source = @"C:\test1\test"; const string target = @"C:\test2\test"; Directory.Move(sourc

使用.NET DirectoryInfo.MoveTo将同一卷上的目录(例如.c:从一个文件夹复制到另一个文件夹)时,将保留访问控制:换句话说,目标具有与源相同的安全性,并且不会继承其新父文件夹之一

我希望能够移动文件夹及其内容,但将权限替换为文件夹的副本

有没有一种简单的方法可以在C中实现这一点

const string source = @"C:\test1\test";
const string target = @"C:\test2\test";
Directory.Move(source, target);

// Get Directory Info
var dInfo = new DirectoryInfo(target); // Or FileInfo
var dSec = dInfo.GetAccessControl();
// Set Security to inherit
dSec.SetAccessRuleProtection(false, false);

// Remove Rules/Accounts that are not inherited
var rules = dSec.GetAccessRules(true, false, typeof (NTAccount));
foreach (FileSystemAccessRule rule in rules)
    dSec.RemoveAccessRule(rule);

// Commit changes to folder
dInfo.SetAccessControl(dSec);
首先移动文件夹。然后创建DirectoryInfo并获取AccessControl。 使用SetAccessRuleProtection,您可以重置并从父级继承安全性。 然后删除所有未继承的帐户/用户。 最后一行是提交更改

档案: I文件夹包含文件和其他文件夹,这取决于它们的安全设置。 如果将它们设置为“继承”,则它们将从您使用父文件夹上方的代码更改的文件夹中继承 所以,如果您不确定它们可能被设置为什么,您必须对所有子文件夹和所有文件执行递归操作

文件的代码是相同的,除了DirectoryInfo之外,您必须使用FileInfo

欲了解更多信息,请访问
//链接供我稍后阅读:

只有当目录为空时,此选项才有效。如问题所述,我需要的是复制一个目录,它的内容在这里你去。。。我编辑了上面的代码。我希望这对你有帮助。如果没有,你可以联系我。