Где хранить доступные для записи данные, которые будут доступны всем пользователям в установщике Vista?

StackOverflow https://stackoverflow.com/questions/114194

Вопрос

Мое приложение установлено через NSIS.

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

Я могу сделать это, установив в каталог "program files".

Существует файл базы данных (firebird), которым должны пользоваться все учетные записи пользователей в системе.

Если я сохраню этот файл базы данных в каталоге program files, он будет доступен только для чтения.

Если я сохраню его в каталоге users APPDATA, у каждого из них будет своя копия, и когда один пользователь добавит данные, другие их не увидят.

Вариант 1 - В каталоге моего приложения в разделе "program files" создайте каталог "Data", в моем установщике сделайте этот каталог доступным для чтения и записи для всех, таким образом, пользовательская виртуализация "program files" не сработает, и все пользователи смогут обновлять файл и видеть изменения друг друга.

Есть еще варианты ?

Это было полезно?

Решение

Данные для всех пользователей должны храниться в %ALLUSERSPROFILE%, или вызовите SHGetFolderPath() с параметром CSIDL_COMMON_APPDATA, чтобы получить область хранения для всех пользователей.

Видишь http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/ для получения более подробной информации.

Другие советы

Где-то под профилем "Все пользователи" должно быть очевидное местоположение.Я думаю, что есть некоторые правила о том, кто получает доступ к чтению / записи по умолчанию, но документация MS рекомендует, если вам нужно что-то другое, создать подкаталог и установить списки управления доступом прямо в программе установки.

Это дыра в системе безопасности, понимаете: http://blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx

В частности, я бы использовал:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

Смотрите на Ссылка на сценарий NSIS для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top