Запретить редактирование файла - C#
Формулировка задачи:
Всем доброго времени суток.
Дано: 1) Очень важный xml файл, который (не обязательно, но желательно) должен лежать в папке с программой.
2) Криворукий, но очень деятельный пользователь.
Вопрос: как запретить редактирование файла всем, кроме самой программы?
Что я уже попробовал:
От обычных пользователей это спасает, но "необычные" легко снимают в свойствах галочку "Только чтение" и спокойно редактируют файл. Можно ли как-то заблокировать изменение этого свойства пользователем?
И второй вопрос: иногда появляется исключение "Процесс не может получить доступ к файлу ..., так как этот файл используется другим процессом.". Появляется оно в совершенно произвольные моменты, хотя файл в этот момент используется только моей программой. Что сделать, чтобы файл все-таки записался? Пока использую следующий (думаю, нерациональный) код:
То есть "повторять, пока файл все-таки не запишется". Можео ли это сделать как-то по-другому?
FileInfo fi = new FileInfo("123.xml"); if (!fi.Exists) { fi.Create(); } fi.Attributes = FileAttributes.Normal; FileStream fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None); fs.Write(Resource1.App, 0, Resource1.App.Length); fs.Close(); fi.Attributes = FileAttributes.System | FileAttributes.Hidden | FileAttributes.ReadOnly;
FileInfo fi = new FileInfo("123.xml"); if (!fi.Exists) { fi.Create(); } fi.Attributes = FileAttributes.Normal; nanana: try { FileStream fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None); fs.Write(Resource1.App, 0, Resource1.App.Length); fs.Close(); } catch (System.IO.IOException e) { goto nanana; } fi.Attributes = FileAttributes.System | FileAttributes.Hidden | FileAttributes.ReadOnly;
Решение задачи: «Запретить редактирование файла»
textual
Листинг программы
using System; namespace IMyRemotingServices { public interface IMyRemotingService { bool Block( String name ); bool Deblock( String name ); byte[] ReadFile( String name ); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д