存储vista安装程序中所有用户共享的可写数据的位置?

时间:2008-09-22 10:42:26

标签: windows-vista installer nsis acl

我的应用是通过NSIS安装的。

我希望安装程序为所有用户安装程序。

我可以通过安装到'program files'目录来实现这一目的。

有一个数据库文件(firebird),系统上的所有用户帐户都应共享。

如果我将此数据库文件存储在“程序文件”目录中,它将是只读的。

如果我将它存储在用户的APPDATA目录中,当一个用户添加其他人看不到的数据时,他们每个都会有一个不同的副本。

选项1 - 在我的app目录下的'program files'下创建一个'Data'目录,在我的安装程序中使所有人都能读写这个dir,这样用户'程序文件'的虚拟化就不会启动了用户可以更新文件并查看彼此的更改。

还有其他选择吗?

4 个答案:

答案 0 :(得分:4)

所有用户的数据应存储在%ALLUSERSPROFILE%中,或使用参数CSIDL_COMMON_APPDATA调用SHGetFolderPath()以获取所有用户存储区域。

有关详细信息,请参阅http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/

答案 1 :(得分:3)

所有用户个人资料下的某个位置将是明显的位置。我认为默认情况下有一些关于谁可以读/写的规则,但MS文档建议您是否需要不同的东西来创建子目录并在安装程序中设置ACL。

答案 2 :(得分:0)

答案 3 :(得分:0)

具体来说我会用:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

有关详细信息,请参阅NSIS Scripting Reference