2016-11-13 2 views
1

В окне 7, 8 и 10 я хочу, чтобы мое приложение хранило данные в общем местоположении, чтобы все пользователи, которые запускали приложение на ПК, получили доступ к тем же данным. Данные доступны для чтения/записи. Какое место я должен использовать?Хранилище данных Windows для всех пользователей

+0

Установлено ли ваше приложение в каталоге программных файлов? Если да, вы можете использовать папку приложения для хранения данных. Если нет, вы можете использовать папку «Program Files \ Common Files». –

+0

@ Snađошƒаӽ Это не то, для чего предназначены «Обычные файлы». «Обычные файлы» в настоящее время не используются, но предназначены для неизменяемых общих компонентов, разделяемых несколькими (потенциально отдельно установленными) приложениями, такими как библиотеки и служебные программы. Канонический пример - это (старый, до 2007 года) редактор уравнений Microsoft, который например, устанавливаются отдельными автономными установками Word и PowerPoint. – Dai

+0

@ Дай Спасибо, не знал этого. Я вроде думал, что «Обычные файлы» были общим дампом *: P. Ваш ответ очень информативен. Не знал всего этого. ;-) –

ответ

2

Windows имеет смешные правила относительно общих данных программы.

  • Program Files ("C:\Program Files "и" C:\Program Files (x86)") предназначен для неизменных (только для чтения) данных программ и исполняемых файлов - поэтому файлы здесь требуют разрешения администратора для редактирования. Таким образом, он делает его полезным для важных файлов, которые не должны быть скомпрометированы (например, ваш основной исполняемый файл). Вот почему установщики работают с повышенными разрешениями. Существует недостаток в том, что если ваша программа имеет механизм автоматического обновления, то это тоже нужно запускать с повышением.
  • Program Data (C:\ProgramData на Windows Vista и выше, или C:\Documents and Settings\All Users\Application Data) предназначен для изменяемых данных программы - вам не нужны права администратора для создания файлов в этой папке, за исключением того, что когда-файл был создан только пользователь который изначально создавал этот файл, впоследствии может его редактировать (хотя все могут его прочитать). Это специальное разрешение CREATOR OWNER.
  • AppData (C:\Users\(you)\AppData\Local и C:\Users\(you)\AppData\Roaming) является для конкретного пользователя и предназначено для конкретного пользователя настройки, конфигурации и данных. Версия Local должна использоваться для определенных машиной настроек, которые не должны перемещаться, если пользователь использует Роуминг-профили, например кеши данных (например, кеш браузера).

Так что в вашем случае ProgramData выглядит идеально, но вы должны быть осторожны CREATOR OWNER правил по умолчанию - но есть обходной путь: инсталлятор (который будет работать в качестве администратора) вашей программы имеет возможность изменять права доступа ACL на его подкаталог ProgramData, чтобы позволить другим пользователям редактировать файлы. Я предлагаю предоставить групповое разрешение Users вместо Everyone для предотвращения возможных удаленных атак и изменений не прошедшими проверку пользователей.