Предполагаемое местоположение файла, которое будет редактироваться всеми пользователями Windows? - PullRequest
4 голосов
/ 20 января 2010

Я создаю продукт, который включает

  • данные кэширования службы Windows на локальном компьютере,
  • пользовательские процессы, считывающие эти данные и записывающие свои собственные данные,
  • служба, в свою очередь, записывает эти данные обратно на сервер.

Куда мне поместить файлы данных для этого, чтобы они были доступны всем пользователям и были доступны для чтения / записи?Программное обеспечение будет работать в корпоративной среде, где рабочие столы иногда довольно закрыты, поэтому, например, некоторые пользователи не будут иметь прав на запись в C: \ Program Files.

Я не думаю, что C: \ DocumentsИ Настройки \ Все пользователи \ Данные приложения \ - хороший кандидат - я думаю, что по умолчанию только администраторы и опытные пользователи имеют здесь право на запись.

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

Я занимаюсь разработкой на C # .net 2005, но это, вероятно, не слишком актуально.

1 Ответ

3 голосов
/ 20 января 2010

К сожалению, у вас нет реального выбора. Вы должны (вы действительно должны) вызвать SHGetSpecialFolderLocation, чтобы получить путь к c: \ users \ public \ AppData (это имя папки, на которую вы ссылались выше, но в Vista и, возможно, в Windows 7) Тогда вы ДОЛЖНЫ создать в нем свою собственную папку приложения. И затем вы ДОЛЖНЫ использовать API безопасности для изменения ACL созданной папки.

В системе НЕТ папки с ACL по умолчанию, которая позволяет нескольким пользователям без прав администратора читать и записывать одни и те же файлы.

c: \ users \ public \ AppData является ближайшим. Модификация ACL папки приложения здесь кажется наилучшим подходом. Конечно, как только вы прибегаете к модификации ACL, папка действительно может быть создана где угодно. Но это может удивить системных администраторов и привести к бреши в безопасности.

...