Member 10192073 Ответов: 3

Как предоставить полное разрешение на файл, созданный моим приложением для всех пользователей


Привет, я хочу дать полный доступ на чтение и запись к файлу, созданному в моем приложении,я написал код

string directory = AppDomain.CurrentDomain.BaseDirectory + "CustomerPayment.xml";
           exporter.SetFilename(directory);
           exporter.SetFileType(PeachwIEFileType.peachwIEFileTypeXML);

           if (!File.Exists(directory))
           {
               File.Create(directory);
           }

           IdentityReference everyoneIdentity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
           DirectorySecurity dir_security = Directory.GetAccessControl(directory);
           FileSystemAccessRule full_access_rule = new FileSystemAccessRule(everyoneIdentity,FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None,AccessControlType.Allow);
           dir_security.AddAccessRule(full_access_rule);

           Directory.SetAccessControl(directory, dir_security);


но приходит ошибка, что " предпринята попытка выполнить несанкционированную операцию.

пожалуйста, помогите мне, я хочу дать полное разрешение на чтение и запись моего вышеуказанного xml-файла

Что я уже пробовал:

Я попытался дать полный контроль доступа к файлу, созданному моим приложением

Philippe Mori

Начните с размещения вашего файла во всех документах пользователей...

3 Ответов

Рейтинг:
2

Philippe Mori

Первое, что нужно сделать, - это использовать каталог, доступный всем пользователям. Как правило, вы должны использовать подкаталог на Все документы пользователей.

На самом деле, вы никогда не должны хранить пользовательские данные в программный файл!

Альтернативой было бы использовать Данные приложений каталог.

Эти каталоги можно легко найти с помощью Environment.GetFolderPath функция.

Если вы используете Данные приложений, вы можете настроить разрешение во время установки, так как я не думаю, что вы сможете сделать это во время работы от имени пользователя, не спрашивая разрешения. Я не думаю, что это нужно для Все документы пользователей (если только безопасность по умолчанию не была испорчена).


Рейтинг:
0

appumvc

Попробуйте добавить настройки в web. config
& lt;конфигурация>
&ЛТ;система.веб&ГТ;
< identity impersonate= "true">


Member 10192073

в app. config нам нужно добавить это, мое оконное приложение это

Рейтинг:
0

Dave Kreskowiak

Если это ASP.NET приложение, Ваш код работает под очень ограниченной учетной записью.

Если это обычный Windows Forms, WPF или какое-либо другое настольное приложение, то код выполняется от имени пользователя, который его запустил.

В любом случае ваш код не может предоставить больше разрешений тому, что у него уже есть в качестве учетной записи, под которой выполняется код.