如果您正在部署使用基于文件的数据库(例如SQLite或Access-MDB)的应用程序,数据库文件应该放到哪台机器上,请记住应用程序需要完全访问此位置?部署基于文件的数据库应用程序时将数据库文件放在哪里?
不要MS准则说0123'文件夹应该只包含只读应用程序文件?
数据库文件放在哪里?在%APPDATA%
文件夹中?
如果您正在部署使用基于文件的数据库(例如SQLite或Access-MDB)的应用程序,数据库文件应该放到哪台机器上,请记住应用程序需要完全访问此位置?部署基于文件的数据库应用程序时将数据库文件放在哪里?
不要MS准则说0123'文件夹应该只包含只读应用程序文件?
数据库文件放在哪里?在%APPDATA%
文件夹中?
您绝对应该使用而不是使用Program Files
目录来存储动态信息。
该Windows博客User Account Control Data Redirection给出了一个很好的总结:
确保一旦你已经确定了合适的位置,你不硬编码路径。相反,使用下面的编程模型和API来检索特定Windows已知文件夹的正确路径:
C/C++本地应用程序:使用检索已知文件夹通过文件夹的KNOWNFOLDERID确定的完整路径SHGetKnownFolderPath功能指示已知位置的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或更高版本