Вопрос

I need to permanently add a scripts folder to my PowerShell path (not just a particular session). I am running the following code:

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

The error is as follows:

Exception calling "SetEnvironmentVariable" with "3" argument(s): "Requested registry access is not allowed."

How do I get registry access/fix this?

EDIT: Not sure if it helps, but I'm using PowerCLI (VMware PowerShell API) on Windows Server 2012.

Это было полезно?

Решение

It sounds like you might not be running as an elevated admin. By default, I believe there's a PowerShell shortcut on your taskbar in Server 2012. Right-click on it, and choose "Run as Administrator" (or something like that). Then try running the command in your original post.

Другие советы

Give permissions to HKLM\System\CurrentControlSet\Control\Session Manager\Environment to a desired user

I'm running a script in a JEA PSSession as a non-admin user (Administrator permissions are not an option in our environment.) @Nipp's answer pointed me in the right direct (I'll up-vote you when I have enough reputation.) This should work for anyone who wants to allow a non-admin to update environment variables (including Path):

#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."
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top