如何修改Intune部署的PowerShell壁纸脚本以允许用户自定义壁纸
解决Intune部署壁纸后用户无法修改的问题
你的问题根源在于HKLM路径下的PersonalizationCSP注册表项——这是MDM用来强制配置系统级设置的,一旦设置后会锁定用户的个性化修改权限,导致用户没法自行更换壁纸。下面提供两种可行方案:
方案一:修改现有脚本,仅设置初始壁纸(不强制锁定)
把原来针对HKLM的系统级注册表操作,改成对**HKCU(当前用户)**的个性化项操作,这样只给用户设置初始壁纸,不会限制后续修改。修改后的脚本如下:
$RegKeyPath = "HKCU:\Control Panel\Desktop" $DesktopPath = "Wallpaper" $DesktopStyle = "WallpaperStyle" # 0=居中, 1=平铺, 2=拉伸 $TileWallpaper = "TileWallpaper" # 0=不平铺, 1=平铺 $url = "https://example.png" $DesktopImageValue = "C:\MDM\example.png" $directory = "C:\MDM" # 创建MDM存储目录 If ((Test-Path -Path $directory) -eq $false){ New-Item -Path $directory -ItemType directory } # 下载壁纸文件 $wc = New-Object System.Net.WebClient $wc.DownloadFile($url, $DesktopImageValue) # 设置用户级壁纸注册表项 New-ItemProperty -Path $RegKeyPath -Name $DesktopPath -Value $DesktopImageValue -PropertyType STRING -Force | Out-Null New-ItemProperty -Path $RegKeyPath -Name $DesktopStyle -Value 2 -PropertyType STRING -Force | Out-Null New-ItemProperty -Path $RegKeyPath -Name $TileWallpaper -Value 0 -PropertyType STRING -Force | Out-Null # 刷新系统参数生效 RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters 1, True
方案二:创建清理脚本,解除HKLM的强制锁定
如果已经用旧脚本完成部署,需要先清理HKLM下的PersonalizationCSP项,解除系统级锁定,用户就能正常修改壁纸了。脚本如下:
$RegKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" # 删除强制配置的注册表项 If (Test-Path -Path $RegKeyPath){ Remove-Item -Path $RegKeyPath -Recurse -Force } # 刷新系统参数让锁定解除生效 RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters 1, True
注意事项
- 方案一适合新部署场景,给用户设置初始壁纸但保留修改权限;
- 方案二适合已部署旧脚本的场景,先解除锁定再让用户自行操作;
- Intune推送脚本时,HKLM操作需要系统权限,HKCU操作可用用户权限或系统权限(系统权限下对所有用户生效)。
内容的提问来源于stack exchange,提问作者Ryu
相关产品推荐
相关产品推荐

