微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用NSIS将应用程序文件安装到标准的Windows用户

我有一个应用程序,需要一个sqlite数据库才能运行。 在我的NSIS脚本中,数据库被复制到用户Local / AppData文件夹。 如果安装该程序的用户是pipe理员用户,则此工作正常。

但是,如果一个标准用户试图安装程序,安装程序要求inputpipe理员密码(因为标准用户不能在Windows上安装程序)并且正在安装用户,现在正在切换到pipe理员,导致安装数据库pipe理员Local / AppData文件夹,而不是实际的用户AppData文件夹。

所以,实际上,当标准用户试图运行程序时,找不到数据库

我不知道如何处理这种情况(最好的做法,如果有的话),并不能find答案。

无法find或加载主类M – hadoop窗口

pipe理源代码编译的最佳方法

在Windows 7上使用VBScript安装inf驱动程序

Windows .inf文件:如何在networking驱动程序安装期间设置认的networking连接名称

在Windows上安装Boost> 1.51:替代Boost Pro?

安装程序是否应该将数据库放到公共场所,比如AllUsers,并且首先将数据库从那里复制到他们自己的AppData文件夹中?

所有用户文件夹的问题似乎是任何人都可以偷看它,并可能删除文件

Linux列出所有的挂载

如何解决Visual Studio错误“无法find一个或多个组件。请在Windows 8.1中重新安装应用程序”?

在32位Windows 10上的Tensorflow:在这个平台上不是支持的轮子; 在当前的win-32频道丢失包,没有匹配的分配

如何在我的Visual Studio安装项目中运行外部安装程序

在Windows8上安装capybara-webkit的麻烦

标准用户可以安装应用程序 在$ LocalAppdata Programs MyApp(FOLDERID_UserProgramFiles)下安装该程序并在HKCU下写入卸载信息。 NSIS有特殊的SHCTX注册表根(由SetShellVarContext控制),如果你想要在一个安装程序中同时支持这两种安装模式,可以提供帮助。

如果你想强制用户总是提升为管理员,那么推荐的方法的确是将数据库的模板/基本版本存储在AllUsers appdata(在Vista +中称为ProgramData)( SetShellVarContext all + $AppData )或Common ProgramFiles $COMMONFILES )文件夹,让你的应用程序为特定用户首次运行一个副本。 只有管​​理员可以删除这些位置的文件。 大多数用户将具有读取权限,但是这不应该因为文件不应该包含用户特定的信息。

您可以在Windows桌面应用程序的认证要求或较早的Windows徽标要求文档中找到这些建议:

10.3您的应用程序数据必须在计算机上的用户之间共享,应存储在ProgramData中

10.4您的应用程序的数据是特定用户独有的,并且不与计算机的其他用户共享,必须存储在Users \ AppData

10.6您的应用程序必须在第一次运行时写入用户数据,而不是在“每台机器”安装期间写入用户数据

安装应用程序时,没有正确的用户位置来存储数据。 尝试通过应用程序在安装后修改计算机级别的认关联行为将不成功。 相反,必须在每个用户级别声明认值,这样可以防止多个用户覆盖对方的认值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐