Вы всегда можете взять на себя ответственность, если у вас есть необходимый доступ администратора. После того, как вы вступите во владение, вам придется закрыть окна свойств, а затем, когда вы вернетесь назад, вы сможете изменить разрешения. Я не могу говорить об изменениях в вашем коде, но держу пари, что у вас нет «владельца» папки.
Доступ к папке запрещен
Раньше у меня была эта проблема, но я всегда могу ее исправить, перейдя на вкладку «Безопасность» в свойствах, затем «Дополнительно», а затем в конце концов добавлю «Админ» в список разрешений доступа. Но в этом случае у меня фактически есть приложение Windows Forms, в котором я использую этот код:
FileStream config = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
в C #.
Все это прекрасно работало внутри Visual Studio, но как только я собрал проект, установил программу на свой компьютер и запустил ее, он создал эту папку.
Почему-то я не могу получить разрешение обычным способом. Это просто дает мне сообщение: «У вас нет разрешения на просмотр или редактирование настроек разрешений этого объекта». Я не знаю почему. Может кто-нибудь подскажите, пожалуйста, как получить разрешение или сразу удалить папку? И что пошло не так в моей программе и вызвало это?
2 ответа на вопрос
Вам также нужно позвонить, SetAccessControl
чтобы применить изменения.
ds = di.GetAccessControl(); ds.AddAccessRule(fsar); di.SetAccessControl(ds); // nothing happens until you do this
Кажется, что примеры на MSDN очень не хватает в деталях, как обсуждалось здесь . Я взломал код из этой статьи, чтобы получить следующее, которое ведет себя хорошо:
static bool SetAcl() { FileSystemRights Rights = (FileSystemRights)0; Rights = FileSystemRights.FullControl; // *** Add Access Rule to the actual directory itself FileSystemAccessRule AccessRule = new FileSystemAccessRule("Users", Rights, InheritanceFlags.None, PropagationFlags.NoPropagateInherit, AccessControlType.Allow); DirectoryInfo Info = new DirectoryInfo(destinationDirectory); DirectorySecurity Security = Info.GetAccessControl(AccessControlSections.Access); bool Result = false; Security.ModifyAccessRule(AccessControlModification.Set, AccessRule, out Result); if (!Result) return false; // *** Always allow objects to inherit on a directory InheritanceFlags iFlags = InheritanceFlags.ObjectInherit; iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; // *** Add Access rule for the inheritance AccessRule = new FileSystemAccessRule("Users", Rights, iFlags, PropagationFlags.InheritOnly, AccessControlType.Allow); Result = false; Security.ModifyAccessRule(AccessControlModification.Add, AccessRule, out Result); if (!Result) return false; Info.SetAccessControl(Security); return true; }
Похожие вопросы
-
3
Отображение https: // ... как локальный логический диск?
-
3
Ubuntu Server с рабочим окружением GNOME - настройка разрешений файла конфигурации Apatche
-
2
Как разрешить запуск программ, требующих прав администратора, при запуске в Vista?
-
-
1
Windows не может записать на диск во время chkdsk и сохранения в офисе
-
5
Есть ли способ запустить запланированное задание в Windows XP без необходимости ввода имени пользова...
-
3
Как я могу запретить другим пользователям просматривать содержимое моего домашнего каталога, кроме о...
-
8
Как я могу дать права на запись в папку всем пользователям Linux?
-
7
Удаление «восстанавливаемых» файлов в Vista
-
1
Доступ к бывшему диску XP в качестве второго диска под Windows 7
-
5
Доступ к бывшему диску XP в качестве второго диска под Windows 7 без Chowning