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

StackOverflow https://stackoverflow.com/questions/9332947

Вопрос

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

Я следую следующей процедуре:

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Скрытый атрибут удалять не нужно.Однако я не знаю другого решения, только для чтения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top