【问题标题】:Windows control panel requires admin privileges when uninstall via NSIS通过 NSIS 卸载时,Windows 控制面板需要管理员权限
【发布时间】:2017-10-12 00:52:11
【问题描述】:

我有一个 NSIS 安装程序/卸载程序,它只为当前用户安装应用程序。 HKCU中有注册表文字,以使应用程序出现在控制面板中。它工作得很好。但是,当我尝试从控制面板卸载应用程序时,它会弹出管理员权限弹出框(AUC 的东西)并以管理员身份运行卸载程序。因此 HKCU 与管理员帐户有关,而不是与用户帐户有关。这样,用户可以“卸载”管理应用程序!我需要允许用户在没有管理员权限的情况下卸载应用程序。

我已经在使用!include MultiUser.nsg 等。我还注意到,可以在用户级别(不需要管理员权限)从控制面板卸载一些随机/默认 MS 应用程序,所以我知道这是可能的。

【问题讨论】:

  • Windows 版本?如果这是 Windows 10,您使用的是设置应用吗?
  • @Anders 是的,它是 Win10。但是“使用设置应用程序”是什么意思?
  • @HarryJohnston 是的,直接使用卸载程序就可以了。但我希望能够像使用任何常规应用程序一样使用控制面板。
  • Win10 拥有带有“程序和功能”的经典控制面板,还拥有新的 Modern/Metro 设置应用程序。
  • @Anders 我只是在使用经典的控制面板。

标签: windows registry nsis


【解决方案1】:

在没有 UAC 提示的情况下,从经典控制面板中的旧“程序和功能”卸载也可以正常工作。我刚刚在 Windows 10.0.16184 上进行了测试:

InstallDir $Temp\Test
RequestExecutionLevel user

Section
SetOutPath  "$InstDir"
WriteUninstaller "$InstDir\Uninst.exe"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS_W10_HKCU_Test" "DisplayName" "NSIS W10 HKCU Test"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS_W10_HKCU_Test" "UninstallString" '"$InstDir\Uninst.exe"'
SectionEnd

Section Uninstall
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS_W10_HKCU_Test"
Delete "$InstDir\Uninst.exe"
RMDir "$InstDir"
SectionEnd

但是有一个knownissue,如果你在设置应用程序中做同样的事情,即使对于 HKCU 卸载程序,它也会强制 UAC 提升:

设置应用程序中的这个问题已经存在几年了,我认为微软并不在意。

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 2014-05-31
    • 2022-10-18
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多