1

你能告诉我吗?我编写了一个使用“Settings.ini”来保存设置的应用程序。该应用程序是使用 InnoSetup 安装的。如果有多个用户帐户并且应用程序安装在其中一个帐户中,那么,如果我尝试从另一个帐户运行应用程序,我会收到错误“无法写入......”。也就是说,如果从另一个帐户运行,应用程序无权写入设置文件。我不知道在 Windows XP 中会发生什么,但这就是应用程序在 Windows 7 中的行为方式。所以请你告诉我,我应该在我的应用程序中定义一些东西以使其适用于多个用户还是应该在安装,在 InnoSetup 参数的某个地方?谢谢你。

4

1 回答 1

1

您应该 - 将程序安装到 Program Files 或其他一些公共文件夹中 - 任何用户都有权读取和运行但无权写入或删除的文件夹。通常安装程序会允许覆盖文件夹,但规则仍然存在:每个用户都应该具有非破坏性权限(读取和执行)和非破坏性权限(删除、覆盖)

这意味着您的安装程序应该请求管理员权限和 UAC 提升 - 询问 InnoSetup 论坛或文档如何做到这一点。这可能涉及将清单资源包含到安装程序中。当普通用户运行安装程序并且安装程序然后要求另一个具有管理员权限的用户名和密码时,这是正常的。


设置和其他用户唯一数据应保存到特殊的每个用户数据文件夹中。通常是用户配置文件下的 AppLocal 文件夹。但是,这是您的应用程序而不是安装程序的任务。安装程序可以创建全局设置模板,应用程序将在给定用户的第一次运行时将其复制到用户本地设置中,或者如果实施级联设置存储,则将由用户本地设置覆盖。

运行命令提示符,发出set命令 - 你会看到所有需要的路径作为环境变量,名称如 AppPath、LocalAppPath 和 UserProfile

于 2013-01-18T10:29:56.080 回答