2014-09-10 2 views
0

При настройке владельца ранее существовавшей папки в Server 2008 R2 существует ли способ распространить его на все подконтейнеры под объектом? Вы можете сделать это в диалоге свойств, но я не вижу переключателя для этого.Установить владельца каталогов и субконтейнеров в C#

Я ищу способ избежать повторного использования через вспомогательные контейнеры для этого.

Этот код переключит владельца только на каталог верхнего уровня.

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); 

ответ

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-каталогов.

+0

Он вернет их все, но тогда вы должны установить владельца на каждом из них в инструкции foreach. Для этого нужно больше времени выполнения. – Saren

+0

Эта операция требует времени, а также в Windows, если вы заинтересованы в замораживании пользовательского интерфейса или что-то еще, запустите метод асинхронно и сообщите о достигнутом прогрессе, используя Progress . – Aybe

 Смежные вопросы

  • Нет связанных вопросов^_^