Моя программа генерирует файл. этот файл должен быть защищен, чтобы пользователь не мог случайно удалить его. Таким образом, его необходимо каким-то образом защитить.
Поскольку файл должен быть защищен, а приложение закрыто FileStream.Lock не является подходящим решением дляэто задание.
Я пытался запретить FileSystemRights.Delete для файла, например:
fSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.Delete, AccessControlType.Deny));
Но это не мешает удалению, для этого мне пришлось изменить его следующим образом:
fSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.Delete | FileSystemRights.WriteAttributes, AccessControlType.Deny));
(пользователь МОЖЕТ открыть свойства файла и добавить обратно разрешения WriteAttribute, а затем может удалить файл, что нормально)
Проблема теперь заключается в следующем: файл должен быть удален изприменение. но выполнение:
fSecurity.RemoveAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.Delete | FileSystemRights.WriteAttributes, AccessControlType.Deny));
// or:
fSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.Delete | FileSystemRights.WriteAttributes, AccessControlType.Allow));
приводит к исключению UnauthorizedAccessException. Так что я не могу отменить то, что я сделал. что странно, потому что в проводнике файлов это абсолютно возможно.
Так что мой вопрос (а): - Как вы снова предоставляете разрешения на удаление - или: чтоэто лучший способ защитить файл от непреднамеренного удаления
файл уже находится в% appdata%, но, поскольку существуют другие папки, которые пользователь может удалить, онабсолютно обязательно, чтобы этот файл не был удален случайно