Служба Windows для контроля доступа к файлу в «Все пользователи \ Данные приложения» - PullRequest
2 голосов
/ 15 января 2009

Вот моя ситуация:

У меня есть приложение, которое использует файл конфигурации. Файл конфигурации применяется ко всем пользователям системы, и все пользователи могут вносить изменения в конфигурацию.

Я решил поместить файл конфигурации в папку «Все пользователи \ Данные приложения».

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

Вот мое временное решение:

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

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

Мое приложение написано на C ++ (MFC), и я не эксперт по всем вещам .Net. Поэтому моя первая идея - написать службу Windows C ++ с интерфейсами COM, которая будет вызываться приложением.

Мои вопросы:

  • Моя идея - хорошая идея или кто-то знает лучший способ сделать это?
  • Есть ли новый, более современный способ предоставления услуг в Windows, чем обычный C ++ и COM?

EDIT:

Я знаю, что легко установить разрешение на запись для всех пользователей.

Вернувшись с Windows XP, также было легко писать файлы в разделе «Program Files» и разделы реестра в разделе «HKLM» для пользователя с ограниченными правами. Но теперь, если вы хотите, чтобы приложение имело сертификацию логотипа Vista, вы не должны писать в это местоположение (событие, если виртуальные магазины могут «спасти» вас).

Возможно, моим окончательным решением будет «сделать его доступным для записи всем пользователям», но мой вопрос на самом деле таков: «Хорошее ли у меня решение или у вас есть другое более простое решение, которое не предполагает взлом поведения, исправленного Microsoft».

Мне очень жаль, что я не разъяснил с самого начала.

Большое спасибо,

Nic

Ответы [ 3 ]

3 голосов
/ 16 января 2009

Это не правильный подход. Если вы помещаете файл в «Все пользователи \ Данные приложения», он должен быть доступен для записи всем пользователям. Когда вы создадите его, создайте его с правами на запись для всех пользователей. Установка разрешений на создание не так сложна.

1 голос
/ 16 января 2009

Статьи Рэймонда Чена интересны и подробны, но обычно чрезмерно догматичны и непрактичны. Если это не какая-то критически важная система с опасностью подделки, я бы взял его точку зрения с огромной кучей NaCl.

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

Или используйте базу данных.

0 голосов
/ 15 января 2009

Я бы даже не стал беспокоиться о COM. Именованные каналы к вашему сервису тоже хорошо работают, и намного проще защитить те с ACL. Служба будет настолько простой, что я даже не буду беспокоиться о MFC или .NET, чистый C ++ должен подойти Все тяжелые работы выполняются вашим настоящим приложением; служба просто проверяет, насколько обоснован запрос. (т.е. не слишком большой и т. д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...