[英]admin level nsis installer needs to create icons for unprivileged user
我需要创建一个NSIS安装程序,它以管理员权限运行。 我要求这些特权
RequestExecutionLevel admin
到目前为止这个工作。 但我还需要在用户桌面上放置快捷方式链接。 我不想为所有用户创建快捷方式,只为当前登录的用户创建快捷方式。 所以我用
SetShellVarContext current
在安装程序部分。 如果当前用户具有管理员权限,则此方法有效。 如果我有普通用户,Windows(7)会要求特权用户的凭据,这也是正确的。 但是,安装程序会在特权用户桌面上创建图标,而不是在当前用户上创建图标。
那么,我怎么能告诉NSIS,如果她没有管理员权限,它应该为当前用户创建桌面图标?
仅供参考,如果我省略了RequestExecutionLevel和SetShellVarContext,我也会被提示输入管理权限,但安装程序会在当前用户桌面和管理员用户上创建图标。 我认为这是某种兼容行为。
你真的不应该这样做(因为这个确切的问题),你基本上是在询问如何创建一个被设计破坏的安装程序。 这不是NSIS特定的问题,甚至不是UAC特有的,它已经存在,因为在Win2000中添加了runas! 当您使用runas / UAC进行提升时,新进程将作为该用户以及其HKCU和shell文件夹执行...
如果您的脚本中需要“RequestExecutionLevel admin”,那么您正在进行机器级别的操作,因此应调用“SetShellVarContext all”并将文件安装在$ ProgramFiles中并在HKLM下编写卸载注册。 这适用于任何版本的NT,而不仅仅是Vista + / UAC。 (大多数人忘记在NT4和NT5上测试为非管理员)
如果为所有用户创建快捷方式是一个大问题,那么我建议您在startmenu页面上启用“不要创建快捷方式”复选框,以便用户可以决定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.