permissions - 是否可以在没有管理权限的情况下写入 NSIS 卸载信息?

标签 permissions registry nsis uninstallation user-permissions

最近,我将基于 NSIS 的安装程序从安装到“程序文件”文件夹中更改为安装到本地用户文件夹中,从而使普通用户帐户无需管理 UAC 提升即可安装(类似于 SkyDrive 或 Google Chrome 的做法) .

要启用卸载,安装程序使用类似以下内容:

; Shortcut for the key.
!define REG_U "Software\Microsoft\Windows\CurrentVersion\Uninstall\ZetaUploader"

; Write uninstall strings.
WriteRegStr HKLM "${REG_U}" "DisplayName" "Zeta Uploader ${VERSION}"
WriteRegStr HKLM "${REG_U}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "${REG_U}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "${REG_U}" "Publisher" "Zeta Software GmbH"
WriteRegStr HKLM "${REG_U}" "URLInfoAbout" "https://www.zeta-uploader.com"

这在使用管理权限运行时运行良好,但在使用用户权限运行时失败(无提示)。

因此我的问题是:

是否可以在没有管理权限的情况下添加到中央卸载控制面板窗口?

我尝试搜索与 HKLM 键类似的 HKCU 键进行卸载,但没有找到。此外,我知道我可以编写一个开始菜单条目来卸载,但我不希望我的用户太容易删除该应用程序。

更新 1/解决方案:

基于Anders answer ,我找到了this blog postingthis example NSI script这也是以同样的方式解释的。

所以最终的解决方案如下:

; Shortcut for the key.
!define REG_U "Software\Microsoft\Windows\CurrentVersion\Uninstall\ZetaUploader"

; Write uninstall strings.
WriteRegStr HKCU "${REG_U}" "DisplayName" "Zeta Uploader ${VERSION}"
WriteRegStr HKCU "${REG_U}" "DisplayVersion" "${VERSION}"
WriteRegStr HKCU "${REG_U}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKCU "${REG_U}" "Publisher" "Zeta Software GmbH"
WriteRegStr HKCU "${REG_U}" "URLInfoAbout" "http://www.zeta-uploader.com"

(请注意,第一个代码段中的 HKLM 已替换为 HKCU)。

最佳答案

您的方向是正确的,与 HKLM 具有相同子路径的 HKCU 是正确的位置。

默认情况下它不存在,但应该适用于任何最新版本的 Windows(不适用于 Win9x,不确定 NT4 和 2000)

关于permissions - 是否可以在没有管理权限的情况下写入 NSIS 卸载信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390049/

相关文章:

python - 删除 sudo 来运行 python 脚本

Ruby Win32 注册表 : The system cannot find the file specified when looking for registry key that doesn't exist

powershell - Format-Table 忘记了一些属性,但 Format-List 显示了所有属性。为什么?

architecture - 如何通过WMI确定操作系统平台?

permissions - 如何从脚本配置兼容模式?

推送通知的 Android checkSelfPermission

mysql - 在设计数据库时,通常是删除实际记录,还是切换 "the undisplay flag"?

cmake - 使用 cmake + cpack 构建时如何签署 Windows 二进制文件和 NSIS 安装程序

installation - 使用 nsis 安装程序创建批处理文件快捷方式的图标

mysql - 想要在 NSIS 中创建具有完全权限的 mysql 用户