4

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

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

我可以通过安装到“程序文件”目录来做到这一点。

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

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

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

选项 1 - 在我的“程序文件”下的应用程序目录中创建一个“数据”目录,在我的安装程序中使这个目录对所有人都是可读写的,这样用户“程序文件”虚拟化将不会启动并且所有用户都可以更新文件并查看彼此的更改。

还有其他选择吗?

4

4 回答 4

4

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

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

于 2008-09-22T11:02:06.530 回答
3

所有用户配置文件下的某处将是明显的位置。我认为默认情况下谁可以读/写有一些规则,但是如果您需要不同的东西来创建子目录并在安装程序中正确设置 ACL,MS 文档建议您这样做。

于 2008-09-22T10:57:59.287 回答
0

这是一个安全漏洞,请参阅:http: //blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx

于 2008-09-22T11:11:02.127 回答
0

具体来说,我会使用:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

有关详细信息,请参阅NSIS 脚本参考

于 2009-05-07T14:52:50.040 回答