在C#中设置目录和子容器的所有者

时间:2014-09-10 17:10:12

标签: c# windows-server-2008-r2

在Server 2008 R2中设置预先存在的文件夹的所有者时,有没有办法将其传播到对象下的所有子容器?您可以在属性诊断中执行此操作,但我没有看到此开关。

我正在寻找一种避免通过子容器重复执行此操作的方法。

此代码仅切换顶级目录的所有者。

DirectoryInfo myDirectoryInfo = new DirectoryInfo("PATH HERE");
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();

System.Security.Principal.IdentityReference myOwner = 
    new System.Security.Principal.NTAccount("TARGET OWNER ACCOUNT");
myDirectorySecurity.SetOwner(myOwner);

myDirectoryInfo.SetAccessControl(myDirectorySecurity);

1 个答案:

答案 0 :(得分:0)

There is no overload将为您提供此功能。

但是下面的代码会这样做:

DirectoryInfo directoryInfo = new DirectoryInfo(path);
var directories = directoryInfo.EnumerateDirectories("*.*", SearchOption.AllDirectories);
foreach (var directory in directories)
{
    // set owner                
}

请注意,我使用EnumerateDirectories代替Directory.GetDirectories,即使有1000个目录,它也会立即返回。