You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11部署阶段通过SetupComplete.cmd设置默认壁纸,首次登录不生效的问题求助

Windows 11部署阶段通过SetupComplete.cmd设置默认壁纸,首次登录不生效的问题求助

问题分析

兄弟,我太懂你这种困惑了!你遇到的问题核心原因其实很明确:SetupComplete.cmd是用SYSTEM系统账户权限运行的,而你用SystemParametersInfo设置的是SYSTEM账户的壁纸,不是即将登录的新用户的。

Windows首次创建新用户时,会从「默认用户(Default User)」模板复制配置文件,SYSTEM账户的壁纸设置完全和新用户不搭边,而且OOBE(开箱体验)阶段结束后,系统还会自动加载默认的用户配置,直接把你在SYSTEM下的设置覆盖了——这就是为啥手动跑一遍脚本就生效(此时是用当前用户权限执行的),但部署后首次登录不行。

至于证书注入没问题,是因为证书是装在**系统级证书存储(Local Machine)**里的,SYSTEM权限能直接修改,对所有用户生效;但壁纸是纯用户级别的设置,两者的生效逻辑完全不一样。

解决方案

给你两个靠谱的方案,选哪个看你的需求:

方案1:直接修改默认用户模板(推荐)

这个方案能让所有新创建的用户自动继承壁纸设置,一劳永逸。把你的chgwallpaper.ps1替换成下面的内容就行:

# 先把壁纸复制到系统公共目录(避免新用户权限不足)
$sourceImg = "$env:SystemRoot\Setup\Scripts\MyPicture.jpg"
$targetImg = "$env:SystemRoot\Web\Wallpaper\CustomWallpaper.jpg"
Copy-Item $sourceImg $targetImg -Force

# 加载默认用户的注册表 hive
$defaultUserHive = "$env:SystemDrive\Users\Default\NTUSER.DAT"
reg load HKU\DefaultUser $defaultUserHive

# 设置默认用户的壁纸相关注册表项
# Wallpaper:壁纸路径
# WallpaperStyle:显示样式(0=居中,1=平铺,2=拉伸,10=填充,根据需求改)
# TileWallpaper:是否平铺(0=否,1=是)
Set-ItemProperty -Path "HKU:\DefaultUser\Control Panel\Desktop" -Name "Wallpaper" -Value $targetImg
Set-ItemProperty -Path "HKU:\DefaultUser\Control Panel\Desktop" -Name "WallpaperStyle" -Value "10"
Set-ItemProperty -Path "HKU:\DefaultUser\Control Panel\Desktop" -Name "TileWallpaper" -Value "0"

# 卸载默认用户注册表 hive
reg unload HKU\DefaultUser

# 顺带设置SYSTEM账户的壁纸(可选,避免后续系统级操作的显示问题)
$code = @'
using System.Runtime.InteropServices;
namespace Win32{
public class Wallpaper{
[DllImport("user32.dll", CharSet=CharSet.Auto)]
static extern int SystemParametersInfo (int uAction , int uParam , string lpvParam , int fuWinIni) ;
public static void SetWallpaper(string thePath){
SystemParametersInfo(20,0,thePath,3);
}
}
'@
Add-Type $code
[Win32.Wallpaper]::SetWallpaper($targetImg)

方案2:延迟到用户首次登录时执行

如果不想动默认用户模板,可以给所有用户加一个「首次登录自动执行」的脚本。修改你的SetupComplete.cmd,在原有内容后面加一行:

powershell -Command Set-ExecutionPolicy RemoteSigned && powershell -File "%SystemRoot%\Setup\Scripts\chgwallpaper.ps1"
# 新增:添加RunOnce注册表项,用户首次登录时自动执行壁纸设置
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v SetCustomWallpaper /t REG_SZ /d "powershell -File ""%SystemRoot%\Setup\Scripts\chgwallpaper.ps1""" /f

这个方案会让每个用户第一次登录时自动跑一遍壁纸设置脚本,跑完就自动删除这个注册表项,不会重复执行。

额外注意点

  • 一定要把壁纸放到所有用户都有权限访问的目录(比如C:\Windows\Web\Wallpaper),别放在Setup\Scripts里,不然新用户可能没权限读取。
  • 如果用方案1,记得测试默认用户模板的修改是否生效——可以用reg load/reg unload命令验证注册表项是否正确写入。

备注:内容来源于stack exchange,提问作者Aaradhya Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:44:34