Рекомендуемый способ записи в скрытый файл / файл только для чтения C #
-
27-10-2019 - |
Вопрос
Я пытаюсь записать в файл со следующими атрибутами - Hidden и ReadOnly.Мой процесс должен иметь возможность писать в него, но другие процессы имеют доступ только для чтения.
Я следую следующей процедуре:
- Проверьте, существует ли файл.
- Удалите существующие атрибуты в файле, т. е. скрытые и только для чтения.
- Завершить запись в файл
- Применить атрибуты (скрытые и только для чтения) обратно к файлу
Я знаю, что это не рекомендуемый способ использования атрибутов файла и записи в скрытый файл.Есть ли способ лучше выполнить мою задачу?
Заранее спасибо.
Решение
Да, пусть ваше приложение имитирует особую учетную запись.Предоставьте этой учетной записи права на запись в этот файл и доступ на чтение для всех других учетных записей.
Самый простой способ запустить в контексте другого пользователя - нажать Shift и щелкнуть правой кнопкой мыши по exe-файлу, выбрать «Запуск от имени другого пользователя».
С помощью службы Windows можно изменить текущую учетную запись в свойствах службы.То же самое и с запланированными задачами Windows.
Чтобы изменить текущую учетную запись "в середине процесса", вам нужно проделать еще немного работы, найдите хорошую статью по этой теме, например http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C .
Другие советы
Как отмечает @Albin, правильный способ решения проблемы доступа - это права доступа к файлам, а не атрибуты.
Если файл скрыт, потому что вы не хотите, чтобы пользователи могли просматривать его содержимое, я бы предложил простой (относительно легкий) механизм шифрования лучшим решением, чем атрибут hidden.
Обратите внимание: атрибуты "скрытый" и "только для чтения" могут быть отключены пользователем с достаточными правами.И, как правило, любой желающий может включить в проводнике функцию «показывать скрытые файлы и папки».
Скрытый атрибут удалять не нужно.Однако я не знаю другого решения, только для чтения.