Jer*_*dge 2 database delphi directory temporary
我有一个应用程序,我想在客户端的计算机上保存一些文件夹结构中的原始文件.此EXE完全独立,可能从CD运行,或者从只读位置运行.因此,我无法将数据保存在EXE位置.我想基本上"询问"Windows应该保存文件的位置,或者将它们保存在正确的位置.
我应该将这些数据保存在客户端计算机上的某些地方,但是在应用程序通常存储其数据的位置?由于此应用程序没有安装程序,我不知道如何处理某些程序数据文件夹的权限.我需要一个为我的应用程序生成公共路径的示例.在同一台机器上运行的应用程序的任何实例都应该知道在这个数据的这个专用位置.
PS - 我的意思是半临时数据库,因为数据库预计会保持很长一段时间,但是有可能它会被擦除以进行清理,在这种情况下它会自动创建一个新数据库.其自身的数据可以被视为某种缓存.
编辑
对于Windows用户会话,这应该是任何Windows会话的全局位置,并且此应用程序实际上是将在会话0中运行的服务.
请参阅MSDN CSIDL列表并使用SHGetFolderPath()函数.
将CSIDL CSIDL_COMMON_APPDATA映射到物理目录.
来自MSDN:
包含所有用户的应用程序数据的文件系统目录.典型的路径是C:\ Documents and Settings\All Users\Application Data.此文件夹用于非用户特定的应用程序数据.例如,应用程序可以在CSIDL_COMMON_APPDATA文件夹中存储拼写检查字典,剪贴画数据库或日志文件.此信息不会漫游,并且可供使用该计算机的任何人使用.
在此目录下,创建一个以供应商(您的公司)命名的目录,并在其下面创建一个应用程序目录.然后把你的数据库放在那里.
注意:请勿使用CSIDL_COMMON_DOCUMENTS/FOLDERID_PublicDocuments.这适用于可在不同应用程序之间共享的类文档文件.对于专有数据,如数据库,请使用CSIDL_COMMON_APPDATA.CSIDL_COMMON_DOCUMENTS中的文件也可能被操作系统"漫游" - 这对于临时数据库来说肯定是不需要的.
注意:对于Vista以后使用SHGetKnownFolderPath(),但对于XP或跨版本,请使用SHGetFolderPath().
归档时间: |
|
查看次数: |
425 次 |
最近记录: |