Рекомендуемый способ записи в скрытый / только для чтения файл C#

Я пытаюсь записать в файл, который имеет следующие атрибуты - Hidden и ReadOnly. Мой процесс должен иметь возможность записи в него, но другие процессы имеют доступ только для чтения.

Процедура, которой я следую, такова:

  1. Проверьте, существует ли файл
  2. Удалить существующие атрибуты в файле, т.е. скрытые и доступные только для чтения
  3. Завершить запись в файл
  4. Применить атрибуты (скрытые и только для чтения) обратно в файл

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

Заранее спасибо.

3 ответа

Решение

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

Самый простой способ запуска в контексте другого пользователя - нажать shift и щелкнуть правой кнопкой мыши по exe-файлу, выбрать "Запуск от имени другого пользователя".

С помощью службы Windows вы изменяете текущую учетную запись из свойств службы. То же самое относится к запланированным задачам Windows.

Чтобы изменить текущую учетную запись "в середине процесса", вам нужно проделать дополнительную работу, найти хорошую статью на эту тему, например, http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C

Нет необходимости удалять скрытый атрибут. Однако я не знаю другого решения с только для чтения.

Как отмечает @Albin, правильный способ решения проблемы доступа - с правами доступа к файлам, а не с атрибутами.

Если файл скрыт, потому что вы не хотите, чтобы пользователи могли просматривать его содержимое, я бы предложил, чтобы простой (относительно легкий) механизм шифрования был бы лучшим решением, чем скрытый атрибут.

Обратите внимание, что скрытые и доступные только для чтения атрибуты могут быть отключены пользователем с достаточными правами. И обычно любой может включить функцию "показывать скрытые файлы и папки" в проводнике.

Другие вопросы по тегам