Изменить путь переменной среды для локальной машины с помощью nsis - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь отредактировать путь переменной среды локального компьютера с помощью сценария NSIS. Я нашел этот интересный пост, но я не смог "установить", если можно так сказать, альтернативную сборку NSIS, о которой они говорили в первом ответе.

Я пробовал что-то вроде этого сообщения, но безуспешно.

НО мне удалось использовать скрипт из ответа Андерса на тот же вопрос здесь Дело в том, что она изменяет только таблицу Path Environment для текущего пользователя , и я хочу изменить ее для локального компьютера .

Я пытался изменить переменную здесь:

Push $ {HKEY_CURRENT_USER}

до:

Push $ {HKEY_LOCAL_MACHINE}

но этого недостаточно, потому что я получаю ошибку 87.

Итак, мои вопросы: возможно ли из сценария Андерса изменить переменную среды для локальной машины? И если да, то как?

С наилучшими пожеланиями, Антуан.

1 Ответ

0 голосов
/ 10 ноября 2018

Ключ, используемый 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 .

...