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

托特·卡尔森(Tott Karlsson)

我有一个需要运行SQLite DB的应用程序。在我的NSIS脚本中,数据库被复制到用户的Local / AppData文件夹中。如果安装程序的用户是admin用户,则此方法工作正常。

但是,如果标准用户尝试安装程序,则安装程序会要求输入管理员密码(因为标准用户无法在Windows上安装程序),并且正在安装的用户现在已切换为管理员,从而​​导致将数据库安装在admins Local / AppData文件夹,而不是实际用户的AppData文件夹。

因此,实际上,当标准用户尝试运行该程序时,它找不到数据库。

我不确定如何处理这种情况(如果有的话,是最佳实践),也找不到解决问题的方法。

安装程序是否应该将数据库放到像AllUsers这样的公共场所,并在首次运行时将数据库从那里复制到自己的AppData文件夹中?

在我看来,allusers文件夹的问题是任何人都可以窥视它并可能删除文件。

不同的

标准用户可以安装应用程序。在$ LocalAppdata \ Programs \ MyApp(FOLDERID_UserProgramFiles)下安装程序,并在下写入卸载信息HKCU如果您想在一个安装程序中同时支持两种类型的安装模式,则NSIS具有特殊的SHCTX注册表根目录(由控制SetShellVarContext),可以帮助您解决此问题。

如果要强制用户始终提升为管理员,则建议的方法的确是将数据库的模板/基本版本存储在AllUsers应用程序数据(在Vista +中称为ProgramData)(SetShellVarContext all+ $AppData)或Common ProgramFiles($COMMONFILES)文件夹中,并具有您的应用程序在首次运行时为特定用户创建一个副本。只有管​​理员可以删除这些位置中的文件。大多数用户将具有读取访问权限,但这无关紧要,因为文件不应包含用户特定的信息。

您可以在Windows桌面应用程序的认证要求或较旧的Windows Logo要求文档中找到以下建议

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

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

10.6您的应用必须在首次运行时而不是在“按机器”安装中的安装过程中写入用户数据

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用docker-compose将azure文件共享安装到linux容器的Web应用程序

将Mesa安装到主文件夹,然后使应用程序从那里使用它

在运行应用程序时将示例文档安装到用户的个人文件夹中

安装后防止用户更改ClickOnce应用程序文件

Inno Setup:将一组文件安装到不同的应用程序

Windows VS Code(用户)安装在程序文件中

新用户-安装应用程序,即Android SDK-到哪里?(等价于程序文件?)

将Ansible应用程序安装到Docker容器

将应用程序安装到iOS设备的移动功能

将 Bower 包安装到 Laravel 5.4 应用程序

使用设备门户网站API将应用程序安装到Hololens的PS脚本错误

当应用程序安装在64位Windows 7的程序文件中时,WebView无法加载URL

应用程序用户可以编辑应用程序文件吗?

Windows 安装程序 (NSIS) 生成应用程序后无法打开应用程序

在Visual Studio安装程序中更改安装路径(应用程序文件夹)

将应用程序安装到设备Xcode 11.6时无法运行应用程序错误

如何手动将应用程序安装到“应用程序”列表中

AngularJS应用程序文件结构

Android应用程序文件路径

macOS应用程序文件关联

为什么只需要将Windows应用程序安装到OS X应用程序中却可以将其拖到文件夹中?

如何将Web应用程序文件上传到Amazon EC2上的Windows Server

管理员运行方式安装的应用程序未安装到登录的用户配置文件中吗?和快捷方式问题

导出Windows应用程序文件(EXE)时使用SQLite数据库的Unity(5.5)插件错误

单击一次不将应用程序设置安装到用户计算机

将所有文件夹/文件推送到应用程序文件吗?

如何允许应用程序用户选择可以在应用程序文档中保存的文件夹位置

应用程序数据安全性-不想让用户访问我的Android应用程序文件

从内存中已安装的android应用程序文件生成哈希