使用nsis修改本地计算机的环境变量路径

时间:2018-11-09 15:21:50

标签: environment-variables nsis

我正在尝试使用NSIS脚本编辑本地计算机环境变量路径。我发现有this个有趣的帖子,但是我无法“安装”(如果可以说)他们在第一个答案中一直在谈论的NSIS的替代版本。

我确实尝试过类似this的发布,但没有成功。

但是我已经设法在来自here的同一问题上使用了安德斯答案中的脚本 事实是,它只为当前用户修改路径环境表,而我想为本地计算机修改它。

我尝试在此处修改变量:

  

按下$ {HKEY_CURRENT_USER}

至:

  

按下$ {HKEY_LOCAL_MACHINE}

但这似乎还不够,因为我不断遇到错误87。

所以我的问题是:是否可以从Anders的脚本中修改本地计算机的环境变量?如果可以,怎么办?

最诚挚的问候,安托万。

1 个答案:

答案 0 :(得分: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