Какое хорошее место для хранения файлов данных в Win7, к которым можно получить доступ и управлять несколькими учетными записями пользователей?

Итак, я работал над системой, состоящей из нескольких частей, таких как стандартное приложение пользовательского режима, подключаемый модуль для Internet Explorer и служба Windows. Мне нужно иметь доступ и/или манипулировать одним и тем же набором файлов данных из всех этих частей, которые могут работать под разными учетными записями пользователей. И я, кажется, немного запутался в том, где лучше всего хранить эти данные.

В настоящее время я использую каталог в профиле «Все пользователи». Единственная проблема заключается в том, что SHFileOperation, похоже, не работает для удаления файлов из этого каталога при вызове из службы Windows, которая запускается под учетной записью локальной системы; Я получаю ошибку, что файл не найден. Я понимаю, что SHFileOperation заменяется IFileOperation в Vista, и я обновил этот код, чтобы использовать IFileOperation, и он действительно работает здесь, но мне интересно, могу ли я столкнуться с другими проблемами в будущем.

Итак, вопрос в том, есть ли «лучшее» место для хранения этих файлов данных в Win7, чем в профиле «Все пользователи»?


person Gerald    schedule 16.08.2010    source источник


Ответы (1)


ProgramData - это путь. В моей (по умолчанию) установке Windows 7 он отображается в C:\ProgramData. Он не защищен UAC, поэтому никому не нужно подниматься, чтобы добраться до него. Создайте там папку с названием вашего приложения и вперед. %ProgramData% достигнет его из пакетных файлов и т. д., и вы сможете найти его, как бы вы ни нашли известные папки — CSIDL_COMMON_APPDATA, если вы работаете в собственном коде, System.Environment.SpecialFolders в управляемом коде — если это не в этом перечислении тогда в Code Pack для этого есть один.

Некоторым пользователям может быть немного сложно найти файл, если им нравится искать в Моих документах, но тогда использование профиля AllUsers также может вызвать эту проблему.

person Kate Gregory    schedule 16.08.2010
comment
К вашему сведению, по умолчанию профиль All Users сопоставляется с C:\ProgramData, так что это то же самое, что я использовал. Возможно, мне следовало указать общую папку appdata, поскольку CSIDL_COMMON_APPDATA — это то, что я использовал для получения пути (сопоставляется с разными местами в разных версиях Windows). В любом случае кажется, что это правильное место для хранения данных, поэтому я просто продолжу его использовать и буду использовать IFileOperation в Win7, где это уместно. - person Gerald; 17.08.2010