В Windows есть какая-нибудь папка, альтернативная ProgramData? - PullRequest
3 голосов
/ 10 декабря 2011

Я пишу настольное приложение и мне нужна папка, которая ...

  • Существует в Windows 7 и Vista
  • Общая для всех пользователей (для данных конфигурации магазина).
  • Приложение может сохранять на нем данные без прав администратора (не как "ProgramData").
  • стандартно (я не хочу создавать другую папку для конкретного приложения в "C:")., рабочий стол или другое место.)
  • «Program Files», конечно, не вариант.

Можете ли вы предложить подходящую папку или лучше использовать реестр?

Ответы [ 4 ]

7 голосов
/ 10 декабря 2011

Рекомендуемый способ сделать это - создать папку во время установки, выделенную для вашего приложения, под «ProgramData» (то есть CSIDL_COMMON_APPDATA / FOLDERID_ProgramData).

Как вы уже знаете, папка CSIDL_COMMON_APPDATA доступна только для обычных пользователей.Таким образом, ваша программа установки должна предоставить папке, в которой она создает ACL, который разрешает доступ, который вам необходим.

Это решение, которое соответствует всем критериям, изложенным в пунктах маркированного списка.Вы упоминаете реестр.Нет области реестра, которая была бы общей для всех пользователей и в то же время доступна для записи обычным пользователям.Хотя вы можете использовать списки ACL для предоставления более разрешающих прав доступа к реестру, на самом деле это не готово.Пожалуйста, забудьте, что я даже упомянул эту возможность!

2 голосов
/ 10 декабря 2011

Если ваше приложение .NET, тогда используйте CommonApplicationData - вы можете узнать реальное местоположение, позвонив GetFolderPath.

РЕДАКТИРОВАТЬ - согласно комментариям:

Вам необходимо правильно настроить ACL - пример исходного кода о том, как это сделать, см. http://www.codeproject.com/Tips/61987/Allow-write-modify-access-to-CommonApplicationData

1 голос
/ 06 февраля 2015

А как насчет публичных пользовательских каталогов?Например: C:\Users\Public\Libraries или C:\Users\Public\Documents

Я заметил эту папку на нескольких моих машинах с Windows 7.Я не уверен, что это всегда там, но может быть вариант.Я надеялся на что-то вроде %appdata% для Публичного пользователя, но самое близкое, что я нашел, было Public\Libraries.

(Как примечание, кажется, C:\Users\Public\Desktop требует администратора для записи.) * +1010 *

0 голосов
/ 10 декабря 2011

как насчет использования% APPDATA% / Company / Product для каталога?

...