簡體   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