我需要更新 system32 文件夹中的 Windows 文件,我已编写脚本来执行此任务。当我在系统上本地运行它时(从具有提升权限的提示符下),它运行正常。
我已经创建了一个 GPO,其中此脚本位于计算机策略 > Windows 设置 > 脚本 > 启动下(我记得这将在启动时使用具有所有所需权限的 SYSTEM 帐户运行该脚本)
脚本执行,但文件未更新。我知道这是因为 UAC 阻止了它。
有没有方法可以实现这一点(无需关闭 UAC)?
答案1
您是否需要每次运行脚本来更新文件,还是只需在本地运行一次?如果是后者,解决方案是使用非常精巧的基于控制台的应用程序,执行命令。请注意,您必须是运行该脚本的机器上的管理员。
然后在本地/映射驱动器上创建一个文件夹,其中包含:
- 您将运行的主批处理文件
- PSexec 应用程序本身
- 将在远程计算机上运行的“有效负载” - 例如您需要更新的文件和 PSexec 将运行的本地批处理文件。
我的常规 PSexec 有效载荷是:
- 在远程计算机上创建临时文件/文件夹
- 运行指向临时位置的 PSexec
- 删除所有创建的文件
示例启动器如下:
@echo off
CLS
set /p PCName=Type the Domain Name or IP address of PC:
echo.
COPY local_payload.cmd \\%PCName%\c$\Temp
psexec \\%PCName% C:\Temp\local_payload.cmd
REM after the payload has been launched you can view the output
REM edit: if it does not want to work, try adding an -s switch that will make it run as a system account.
pause
REM here you delete everything after you are finished
DEL \\%PCName%\c$\Temp\SMS_LOCAL.cmd
pause
:eof