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