2015-12-21 3 views
0

Я хотел бы знать, где лучше всего разместить локальную базу данных? У меня есть приложение, которое считывает базу данных (SQLITE) из Appdata/Roaming. Однако это не работает на Windows 7, но отлично работает на Windows 8-10. Я считаю, что это связано с разрешениями и хотел бы получить дополнительные знания. Я создаю установку с inno и просто имею проблемы при сбоях программ при попытке доступа к базе данных на окнах 7Лучшее место для хранения локальной базы данных с приложением?

ответ

1

Все пользователи должны иметь доступ к своей собственной каталогу пользователей. Получение этого должно происходить из связанных API и переменных среды, таких как here. CSIDL_APPDATA должен быть действительным во всех версиях ОС, которые вы кодируете. Вероятно, вам не нужно блуждать db, поэтому, возможно, CSIDL_LOCAL_APPDATA - лучший выбор, и тот, который я буду использовать.

2

guideline для хранения пользователей (то есть данных, которым разрешено чтение и запись) роуминга (то есть данных, которые доступны пользователю, если они находятся в режиме удаленного входа) из Windows 7 on является C: \ Users \ имя пользователя \ AppData \ Roaming. Директивой является создание папки с уникальным именем, таким как GUID в этом каталоге, и сохранение данных пользователя в роуминге в этой папке. Вы можете получить путь к этому каталогу для текущего пользователя в .NET с помощью Path.Combine(Environment.GetFolder(Environment.SpecialFolder.ApplicationData), "a unique string").

+0

привет, спасибо за ответ. Я создал это в C# в inno, установка переходит в 'DefaultDirName = {localappdata}', а в коде C# у меня есть 'Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)' Единственная проблема заключается в том, что она не читается из базы данных 100% времени, поскольку я обнаружил, что он не будет работать на устройстве Windows 10, но отлично работает на двух других проверенных мной. – Bish25

+0

Я не могу проверить ваше приложение. Вы должны опубликовать код, демонстрирующий проблему. –

Смежные вопросы