在 Windows 11 上使用 Sudo 运行提升的命令

Jacki

从 build 24H2 开始,Windows 11 包含一个内置的sudo命令。此命令允许以管理员身份直接从非特权(非管理员)CMD/PowerShell/终端会话运行命令。

默认情况下,sudo 命令在 Windows 11 中处于禁用状态。要允许使用此工具,请使用启用 sudo切换开关设置->系统->对于开发商

或者您可以通过 Windows 注册表启用 sudo。

reg add "HKLMSoftwareMicrosoftWindowsCurrentVersionSudo" /v "Enabled" /t REG_DWORD /d 1 /f

例如,运行以下 PowerShell 命令从非提升终端重新启动 Windows 服务将导致错误

Restart-Service iphlpsvc

然后,在 Windows 设置中启用 sudo 并通过 sudo 运行相同的命令。

sudo powershell "Restart-Service iphlpsvc"

将出现用户帐户控制 (UAC) 提示,请求权限提升。一旦获得批准,就会启动一个新的终端窗口(与已建立上下文的当前会话分开),并使用管理权限执行指定的命令。

与 runas 不同,sudo 命令不会在命令行中提示输入管理员密码。 UAC提示用于确认和提升当前用户的权限,但不允许选择不同的用户帐户进行提升。

同样,您可以在CMD提示符下使用Sudo。我正在尝试使用非管理(非提升)命令提示符来停止服务。

net stop iphlpsvc

System error 5 has occurred.
Access is denied.

现在我通过 sudo 运行相同的命令:

sudo net stop iphlpsvc

以前,从非特权控制台运行具有提升权限的程序或命令需要使用“以管理员身份运行”选项。如果 PowerShell 控制台在非管理模式下运行,则必须使用以下命令从当前会话中启动提升的会话:

Start-Process powershell -Verb runAs

Sudo for Windows 以提升的权限运行应用程序模式。这些模式可以从“设置”应用程序中选择或从命令行指定。

  • 在新窗口中– 当通过 sudo 运行命令或程序时,它会在一个新的提升窗口(会话)中打开,并以管理员身份运行。这是默认行为。sudo config --enable forceNewWindow
  • 禁用输入 –这是最安全的选项,其中命令在当前窗口中以提升的权限运行,但无法在该会话中接收或提示用户输入:sudo config --enable disableInput
  • 排队– 此模式与 Linux 和其他操作系统中 sudo 命令的行为最相似。提升的命令在当前控制台中运行,并可以从中接收输入(最方便但最不安全的选项):sudo config --enable normal

无论当前 sudo 模式如何,您都可以使用 sudo 在当前控制台中运行提升的命令。只需添加排队选项。

sudo --inline net stop iphlpsvc

要查看 Windows 中支持的 sudo 选项和参数的完整列表,请运行以下命令:

推荐阅读:Windows 10 用户应了解的最常用运行命令

sudo -h