繁体   English   中英

Unicode NSIS安装程序和UAC插件:内部实例和外部实例之间如何交换数据

[英]Unicode NSIS Installer and UAC plugin: how exchange data between Inner and Outer Instances

我想在用户级别下安装MSI软件包,并在HKLM下设置几个注册表项。 第二个需要管理员级别,我可以使用NSIS :: UAC插件来完成。 但是,我需要一种方法来通知InnerInstance(具有管理员级别的特权)有关用户选择了哪些复选框的信息。 有以下几种方式可以交换此类信息(仅1或0)

  • 两个实例都可以访问的文件夹中的Ini文件

没有成功,APPDATA不同,COMMONAPPDATA需要管理员级别,TMP也不可选,因为它取决于配置文件名称

  • 全局应用程序变量

没有成功,变量不存在。 顺便说一句,即使我运行简单的控制台,设置变量并运行其他控制台-我也没有看到变量

  • 写一个设置和获取信号量的插件

假设它对于简单的安装问题来说太复杂了,但是如果没有其他可用的选项,它将选择它

  • SyncVariable宏

!macro _SyncVariable _variable!define Lprefix L $ { LINE } push $ R0转到_SyncVariableInner $ {Lprefix} _SyncVariableOuter $ {Lprefix}:StrCpy $ R0 $ {_ variable}返回_SyncVariableInner $ {Lprefix}:__ Insertmacro UAC $ {UAC_SYNCREGISTERS} StrCpy $ {_ variable} $ R0!undef Lprefix pop $ R0!macroend!define SyncVariable !insertmacro _SyncVariable

它应该可以工作,但是没有

  • 获取新的UAC插件-没有看到我可以在哪里获得二进制文件,因为最新版本不支持NSIS unicode构建

那么,有人可以通过链接,想法帮助我吗?

没有NSIS的正式Unicode构建,没有分叉的项目,但此配置不支持UAC插件,因此不为其提供编译的DLL(如果您在NSIS中提出要求,则可能可以获得编译的版本IRC频道)。

这种混合安装程序很难正确安装,恕不应恕我直言。 如果使用访问控制插件为所有用户提供对$windir\\temp\\{yourguid}HKLM\\Software\\{yourguid}写访问权限,则您可以交换信息,但这也是潜在的安全漏洞。 命名全局内核对象(信号量,内存映射等)也存在相同的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM