2012-02-17 4 views
1

Я пытаюсь записать файл, который имеет следующие атрибуты - Скрытый и ReadOnly. Мой процесс должен иметь возможность писать, но другие процессы имеют ReadOnly Access.Рекомендуемый способ записи в файл скрытого/ReadOnly C#

Процедура, я следующее:

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

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

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

+0

Имейте в виду, что этот процесс зависит от условий гонки. –

ответ

1

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

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

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

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

+0

Спасибо за ваше предложение. Я новичок здесь, могу ли я получить какие-либо ссылки, как это сделать? И приложение в настоящее время представляет собой консольное приложение, которое позже должно быть преобразовано в сервис Windows. Будет ли решение, которое вы предложили, повлиять на конфигурацию приложения позже? Благодарю. – user591410

+0

Вы можете запустить все приложение в контексте этого специального пользователя. С Windows Service это очень просто, я обновил свой ответ. –

+0

Спасибо, Альбин! Это сработало. – user591410

0

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

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

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

0

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

Смежные вопросы