Powershell:永久修改路径,“不允许请求的注册表访问,”

vwkv1x7d  于 2022-12-29  发布在  Shell
关注(0)|答案(4)|浏览(354)

我需要将脚本文件夹永久添加到我的PowerShell路径中(而不仅仅是某个会话)。我正在运行以下代码:

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

错误如下所示:
使用“3”个参数调用“SetEnvironmentVariable”时发生异常:“不允许请求的注册表访问。”
如何获得注册表访问权限/修复此问题?
编辑:不确定是否有帮助,但我正在Windows Server 2012上使用PowerCLI(VMware PowerShell API)。

nhaq1z21

nhaq1z211#

听起来你可能不是以高级管理员的身份运行。默认情况下,我相信在Server 2012的任务栏上有一个PowerShell快捷方式。右键单击它,选择“以管理员身份运行”(或类似的操作)。然后尝试运行你原始帖子中的命令。

vxbzzdmp

vxbzzdmp2#

HKLM\System\CurrentControlSet\Control\Session Manager\Environment的权限授予所需用户

n3h0vuf2

n3h0vuf23#

我正在JEA PSSession中以非管理员用户的身份运行一个脚本(在我们的环境中,管理员权限不是一个选项。)@Nipp的回答为我指出了正确的方向(当我有足够的声誉时,我会投票给你。)这应该适用于任何希望允许非管理员更新环境变量(包括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."
}
jm81lzqq

jm81lzqq4#

在PowerShell上尝试一次相同的命令,但不要直接打开它,而是右键单击PowerShell并以管理员身份打开;我在为minikube https://minikube.sigs.k8s.io/docs/start/设置环境变量时遇到了同样的问题,如下所示

$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
if ($oldPath.Split(';') -inotcontains 'C:\minikube'){ `
  [Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine) `
}

在上面的命令中,我们使用::Machine,如果用作::User,则无需运行,但这在minikube start命令中不起作用;在某些情况下,使用作为::User在某些情况下可以工作https://github.com/PowerShell/PowerShell-Docker/issues/88#issuecomment-443934635
你的问题和我的差不多,所以这个可能有用

相关问题