【问题标题】:Modify Environment Variable Path for local machine with nsis使用 nsis 修改本地机器的环境变量路径
【发布时间】:2018-11-09 15:21:50
【问题描述】:
我正在尝试使用 NSIS 脚本编辑本地机器环境变量路径。我发现 this 有趣的帖子,但我无法“安装”,如果我可以说,他们在第一个答案中一直在谈论的 NSIS 的替代版本。
我确实尝试过this 之类的帖子,但没有成功。
但是我已经设法使用安德斯回答的脚本来处理here提出的同一个问题
问题是,它只为当前用户修改路径环境表,我想为本地机器修改它。
我尝试在这里修改变量:
推送 ${HKEY_CURRENT_USER}
到:
推送 ${HKEY_LOCAL_MACHINE}
但这似乎还不够,因为我不断收到错误 87。
所以我的问题是:Anders 的脚本是否可以修改本地机器的环境变量?如果是,如何?
最好的问候,安托万。
【问题讨论】:
标签:
environment-variables
nsis
【解决方案1】:
HKLM 使用的密钥也不同,但一旦你给它正确的密钥,它就对我有用:
!include LogicLib.nsh
!include WinCore.nsh
!ifndef NSIS_CHAR_SIZE
!define NSIS_CHAR_SIZE 1
!endif
!ifndef HKEY_LOCAL_MACHINE
!error HKEY_LOCAL_MACHINE
!endif
Function RegAppendString
TODO: Function from https://stackoverflow.com/a/31342128/3501# goes here
FunctionEnd
RequestExecutionLevel Admin ; Request UAC elevation
Section
Push ${HKEY_LOCAL_MACHINE}
Push "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Push "Path"
Push ";"
Push "c:\whatever"
Call RegAppendString
Pop $0
DetailPrint RegAppendString:Error=$0
SectionEnd
但自从该功能发布以来,事情已经发生了变化,现在有一个专门为环境变量操作创建的插件。我建议你试试EnVar plug-in。