如果要部署使用基于文件的数据库(如SQLite或Access-MDB)的应用程序,应将数据库文件部署到计算机上的哪个位置,请记住应用程序需要完全访问此位置?
MS指南是否说%PROGRAMFILES%
文件夹只应包含只读应用程序文件?
数据库文件应该放在哪里?在%APPDATA%
文件夹中?
答案 0 :(得分:1)
你绝对应该不使用Program Files
目录来存储动态信息。
此Windows博客User Account Control Data Redirection提供了一个很好的摘要:
确保在确定适当的位置后不对路径进行硬编码。而是,使用以下编程模型和API之一来检索特定Windows已知文件夹的正确路径:
C / C ++本机应用程序:使用SHGetKnownFolderPath函数检索由文件夹的KNOWNFOLDERID标识的已知文件夹的完整路径,这是一个GUID参数,指示您想要获取的已知位置:
- FOLDERID_ProgramData - 所有用户的共享程序数据目录
- FOLDERID_LocalAppData - 每用户程序数据目录(非漫游)
- FOLDERID_RoamingAppData - 每用户程序数据目录(漫游)
托管代码:使用System.Environment.GetFolderPath函数。 GetFolderPath接受一个参数,指示您想要获得的已知位置:
- Environment.SpecialFolder.CommonApplicationData - 所有用户的共享程序数据目录
- Environment.SpecialFolder.LocalApplicationData - 每用户程序数据目录(非漫游)
- Environment.SpecialFolder.ApplicationData - 每用户程序数据目录(漫游)
如果上述选项均不可用,请使用环境变量:
- %ALLUSERSPROFILE% - 所有用户的共享程序数据目录
- %LOCALAPPDATA% - 每用户程序数据目录(非漫游) - Windows Vista或更高版本
- %APPDATA% - 每用户程序数据目录(漫游) - Windows Vista或更高版本