zl程序教程

您现在的位置是:首页 >  其他

当前栏目

全网详细解决执行Set-ExecutionPolicy RemoteSigned报出的的错误:对注册表项“HKEY_LOCAL_MACHINESOFTWAREMicrosoft.”的访问被拒拒绝。

错误set执行 解决 详细 访问 全网 local
2023-09-27 14:25:31 时间

1. 复现问题


今天,在Windows PowerShell中执行Set-ExecutionPolicy RemoteSigned,却报出如下错误:

Set-ExecutionPolicy: 对注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell的访问被拒绝。 要更改默认(LocalMachine)作用域的执行策略,请使用“以管理员身份运行”选项启动Windows PowerShell。要更改当前用户的执行策略,请运行Set-ExecutionPolicy -Scope CurrentUser

在这里插入图片描述

2. 分析问题


我们注意图中这句话:

执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170

我们执行Set-ExecutionPolicy RemoteSigned,即是修改它的安全执行策略,这样可能会产生风险。

我们不妨打开它提供的链接看看:https:/go.microsoft.com/fwlink/?LinkID=135170 ,如下所示:

在这里插入图片描述

PowerShell执行策略是一项安全功能,用于控制PowerShell加载配置文件和运行脚本的条件。

此功能有助于防止恶意脚本的执行。

我们可以跳过这一段长说明,鼠标向下滑动直至找到RemoteSigned的说明,如下所示:

在这里插入图片描述

当然,这个说明了解即可,不用过多研究它。

通过对链接文档的分析,发现没有解决我的问题。

此时,我们再回头研究上图中的错误信息,他说了两句重要的话:

  1. 要更改默认(LocalMachine)作用域的执行策略,请使用以管理员身份运行选项启动Windows PowerShell

  2. 要更改当前用户的执行策略,请运行Set-ExecutionPolicy -Scope CurrentUser

LocalMachineCurrentUser在哪里,我们可以通过如下命令查看:

Get-ExecutionPolicy -List

在这里插入图片描述

LocalMachineCurrentUser是执行策略的作用域,还有其他的作用域,如下图所示:

在这里插入图片描述

执行策略的作用域了解完后,我们不更改默认(LocalMachine)作用域,只是更改当前用户的执行策略,来解决我们的问题。

3. 解决问题

  1. 我们在左下角的搜索框,输入powershell ,以管理员身份运行,或直接打开都可以,如下图所示:

在这里插入图片描述

若你不想使用搜索框,可以直接按window + r ,输入PowerShell(蓝色运行屏幕) ,也可以cmd(黑色运行屏幕),点击确定即可:

在这里插入图片描述

  1. Windows PowerShell中执行命令:Set-ExecutionPolicy -Scope CurrentUser

接着提示我们输入执行策略(ExecutionPolicy),我们把此策略RemoteSigned输入进去,如下图所示:

在这里插入图片描述

当然,如果你觉着Set-ExecutionPolicy -Scope CurrentUser比较麻烦,我们可以直接执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,如下图所示:

在这里插入图片描述

  1. 输入get-ExecutionPolicy来验证是否成功,若系统回复Restricted,表示状态是禁止的,反之是成功的。

在这里插入图片描述

4. 解决该错误的其他方法


如果我的方法无法解决你的问题,可以参考如下解决方法。

  1. 输入set-ExecutionPolicy RemoteSigned,出现选择条件,输Y,试一下。

  2. 可能node版本较低。

建议把node卸载了,重新安装高于node 16的版本,比如node16.15.0,然后再尝试。

在这里插入图片描述

现在好像是16以下的版本不在更新维护了。

有时,node版本也会影响这个配置。