Powershell: постоянное изменение пути, запрошенный доступ к реестру не разрешен.

Мне нужно навсегда добавить папку сценариев к моему пути PowerShell (а не только к конкретному сеансу). Я запускаю следующий код:

[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\scripts", "Machine")

Ошибка следующая:

Исключение, вызывающее «SetEnvironmentVariable» с аргументом (ами) «3»: «Запрошенный доступ к реестру не разрешен».

Как мне получить доступ к реестру / исправить это?

РЕДАКТИРОВАТЬ: не уверен, помогает ли это, но я использую PowerCLI (VMware PowerShell API) в Windows Server 2012.


person corneria    schedule 20.11.2013    source источник
comment
Вы работаете как администратор с повышенными привилегиями?   -  person mikekol    schedule 21.11.2013
comment
Не уверен, если честно. Я новичок в этом. Есть ли способ легко узнать?   -  person corneria    schedule 21.11.2013
comment
Предположим, что нет. По умолчанию я считаю, что на панели задач в Server 2012 есть ярлык PowerShell. Щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора» (или что-то в этом роде). Затем попробуйте запустить команду из исходного сообщения.   -  person mikekol    schedule 21.11.2013
comment
Это действительно работает. Спасибо.   -  person corneria    schedule 21.11.2013
comment
Если вы ответите на ветку, я приму.   -  person corneria    schedule 21.11.2013


Ответы (4)


Похоже, вы не работаете с правами администратора с повышенными привилегиями. По умолчанию я считаю, что на панели задач в Server 2012 есть ярлык PowerShell. Щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора» (или что-то в этом роде). Затем попробуйте запустить команду из исходного сообщения.

person mikekol    schedule 20.11.2013

Разрешить HKLM\System\CurrentControlSet\Control\Session Manager\Environment желаемому пользователю

person Nipp    schedule 15.02.2017

Я запускаю сценарий в сеансе JEA PSSession как пользователь, не являющийся администратором (в нашей среде права администратора не подходят). Ответ @Nipp указал мне правильное направление (я проголосую за вас, когда у меня будет достаточно репутации. .) Это должно сработать для всех, кто хочет разрешить неадминистраторам обновлять переменные среды (включая путь):

#allow necessary registry permissions to allow updating environment variables
#e.g.:
#Allow-EnvironmentVariableUpdate -Principal 'Power Users'
function Allow-EnvironmentVariableUpdate()
{
    Param(
    [string]$Principal  #name of user or group
    )

    $acl= get-acl -path "hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
    $inherit = [system.security.accesscontrol.InheritanceFlags]"None"
    $propagation = [system.security.accesscontrol.PropagationFlags]"None"
    $rights = "QueryValues,SetValue,CreateSubKey"
    $rule=new-object system.security.accesscontrol.registryaccessrule $Principal,$rights,$inherit,$propagation,"Allow"
    $acl.addaccessrule($rule)
    $acl | set-acl
    "'$Principal' can edit environment variables."
}
person f00_b33rd    schedule 25.06.2018
comment
Этот ответ позволяет указанному пользователю устанавливать эти значения без повышения до статуса администратора. - person 110100100; 14.08.2020

У меня тоже были эти проблемы. ЗАПУСТИТЕ ВАШЕ ЗАПИСЬ С АДМИНИСТРАТОРОМ

person hamed n    schedule 06.05.2020