Не удаётся сменить владельца папки
От: FDSC Россия consp11.github.io блог
Дата: 04.06.10 22:01
Оценка:
Привет всем.
Создаю директорию, при этом нужно убрать практически все права на создателя, для чего я, в частности, пытаюсь сменить владельца с помощью DirectorySecurity.setOwner

Вот код:
                    var ds = new DirectorySecurity();
                    ds.SetOwner(new System.Security.Principal.NTAccount(null, windowsUserName));

                    if (adminName != "")
                    {
                        ds.AddAccessRule(new FileSystemAccessRule(windowsUserName,  FileSystemRights.FullControl, AccessControlType.Allow));
                        ds.AddAccessRule(new FileSystemAccessRule(Logger.adminName, FileSystemRights.FullControl, AccessControlType.Allow));
                    }
                    else
                    {
                        ds.AddAccessRule(new FileSystemAccessRule(windowsUserName, FileSystemRights.FullControl, AccessControlType.Allow));
                    }

                    foreach (var s in aUsers)
                    {
                        ds.AddAccessRule(new FileSystemAccessRule(windowsUserName, FileSystemRights.Read, AccessControlType.Allow));
                    }

                    Directory.CreateDirectory(dirName, ds);

                    var dInfo = new DirectoryInfo(dirName);
                    ds          = dInfo.GetAccessControl();

                    ds.SetOwner(new System.Security.Principal.NTAccount(Logger.adminName));
                    dInfo.SetAccessControl(ds);

                    dInfo = new DirectoryInfo(dirName);
                    ds    = dInfo.GetAccessControl();

                    ds.AddAccessRule    (new FileSystemAccessRule(windowsUserName, FileSystemRights.AppendData,  AccessControlType.Allow));
                    ds.AddAccessRule    (new FileSystemAccessRule(windowsUserName, FileSystemRights.CreateFiles, AccessControlType.Allow));
                    ds.RemoveAccessRule (new FileSystemAccessRule(windowsUserName, FileSystemRights.FullControl, AccessControlType.Allow));
                    dInfo.SetAccessControl(ds);


Всё работает хорошо кроме строки ds.SetOwner(new System.Security.Principal.NTAccount(Logger.adminName));
Она выдаёт, что "The security indentifier is not allowed to be owner of this object" "Идентификатор безопасности не может быть владельцем данного объекта"

Что делать?
directorysecurity setowner права acl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.