我有一个应用程序,需要一个sqlite数据库才能运行。 在我的NSIS脚本中,数据库被复制到用户Local / AppData文件夹。 如果安装该程序的用户是pipe理员用户,则此工作正常。
但是,如果一个标准用户试图安装程序,安装程序要求inputpipe理员密码(因为标准用户不能在Windows上安装程序)并且正在安装用户,现在正在切换到pipe理员,导致安装数据库pipe理员Local / AppData文件夹,而不是实际的用户AppData文件夹。
我不知道如何处理这种情况(最好的做法,如果有的话),并不能find答案。
无法find或加载主类M – hadoop窗口
在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] 举报,一经查实,本站将立刻删除。