没有UAC,可以在几台Win10远程计算机上运行regedit吗?


0

有没有一种方法可以在一堆远程计算机上运行regedit,而不会在Windows10上弹出UAC?在/s命令行上不工作在我的Windows 10的测试计算机(我倒确信,将在我的Win7 systyems工作,但我的大多数客户端计算机是Win10)。

最终目标是

  1. 将注册表文件导入HKLM以将PowerShellexecutionPolicy提升为不受限制,
  2. 使用Powershell启用系统保护/还原,
  3. 使用PowerShell创建还原点,最后
  4. 导入一个reg文件,将executionPolicy设置回Restricted或RemoteSigned。(所有这些都是作为预修补任务完成的,顺便说一句)。

在我的测试计算机上,除了regedit ...即使带有/s参数...也无法在Windows 10上没有UAC弹出窗口的情况下运行。

我已经尝试通过bat文件运行PowerShell提升权限:

powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"

但是它们都失败了(即访问被拒绝,PowerShell执行策略未提升)。

导入reg文件然后运行我的Powershell脚本是我所获得的最接近成功的方法。

我还通过Sysinternals psexec尝试了此方法,它基于搜索到的其他解决方案(例如,对reg.exe的psexec调用进行导入),但这有其自身的一系列问题(psexec需要为EULA导入reg,所以同样的问题,而不是解)。

从中借用,我还尝试运行以下命令:

C:\Windows\System32\REG.exe ADD HKLM\\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f

...但是,这种错误不断出现:“错误:无效的密钥名称”。我可能已经花了太长时间(现在3天了),只需要另一双眼睛。有人可以协助吗?


为了写入HKLM,您将需要管理权限。否则,您只会收到“访问被拒绝”错误。
LPChip

“将注册表文件导入HKLM以将PowerShell执行策略提升为不受限制,”-这需要提升的权限。没有提升的权限,您将无法修改此密钥。您可以在脚本中更改策略,前提是该脚本已提升和/或以提升用户身份运行。 让您的系统管理员为您进行这些更改。
Ramhound

Answers:


1

因为您尝试了几次不同的尝试,所以实际上您在帖子中指出了一些可能需要答案的问题。您还不清楚如何远程运行这些命令。您显示的命令实际上都没有在远程计算机上执行任何操作。它们都在本地计算机上执行。但是,您确实提到过尝试PSExec。

我也没有意识到UAC会干扰远程命令执行的任何情况。因此,我只能假设您在本地计算机上运行命令并遇到UAC提示。但是,您这样做是为了准备实际远程运行命令。

因此,我将尝试为您提供一些基本的远程执行支持,以使您走上正确的道路。所有远程执行命令都需要打开某些防火墙端口。因此,在前进时请记住这一点。

Powershell已经具有远程命令/脚本执行机制。

  • 您可以将-ComputerName开关用于某些命令,以在远程系统上执行它们。
  • 你可以与一个交互式远程会话,Enter-PSSession <ComputerName>Exit-PSSession
  • 您可以使用该Invoke-Command -ComputerName <ComputerName>命令远程运行任何脚本或命令。

这些方法均不受“执行策略”限制的约束,除非您启动交互式Powershell会话,然后继续尝试执行脚本。

这些命令将使用您当前的登录用户帐户在远程计算机上运行。如果您不是远程计算机上的管理员,则需要另外提供一个PSCredential使用-Credential交换机作为管理员的对象。

https://docs.microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands?view=powershell-6

或者,您也可以使用PSExec运行远程命令或可执行文件。最好在SYSTEM上下文中运行这些命令,以避免任何权限问题,但是如果您仅在远程计算机上的管理员上下文中运行它们,通常它们会成功。

  • -accepteula开关绕过EULA提示
  • 使用-s开关在SYSTEM上下文中运行
  • 有时,必须使用-i(交互式)开关才能正确运行某些第三方可执行文件。

通过PSExec执行的命令不受UAC限制。但是,如果尝试通过PSExec远程运行Powershell,而PSExec依次尝试运行脚本,则除非您也使用该-ExecutionPolicy Bypass开关,否则执行策略将受到阻碍。但是,使用PSExec远程运行Powershell并依次运行脚本是完成所需工作的很长的路要走。

同样,PSExec将使用您当前登录的用户上下文建立与远程计算机的连接。如果您不是远程计算机上的管理员,则需要指定使用-u-p开关的用户名/密码。

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

最后一件事,您必须始终记住命令的执行位置(本地或远程),并意识到从命令执行位置的角度来看,您尝试访问的任何资源都已在执行。例如,如果我C:\MyBatch.bat在远程计算机上运行命令,则C:\MyBatch.bat该远程计算机上必须存在该命令。


极好的答案...非常有启发性。谢谢Appleoddity
Michael Boyd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.