I'm trying to set a lock screen wallpaper for multiple devices using Intune, but I'm stuck because we only have Windows 11 Pro, not Enterprise. I've looked through various Reddit threads and tutorials, and even wrote up a PowerShell script that works perfectly when I run it manually. Here's what I have:
```powershell
$RegistryPath = "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPersonalizationCSP"
$RegistryPathPs = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPersonalizationCSP"
$LockScreenPath = "$env:ProgramDataPDXLockScreenPDXHandLogon3860px.jpg"
# Create the key if it doesn't exist
if (-not (Test-Path $RegistryPathPs)) {
New-Item -Path $RegistryPathPs -Force | Out-Null
Write-Host "Registry key created: $RegistryPathPs"
} else {
Write-Host "Registry key already exists: $RegistryPathPs"
}
# Set Lock Screen
reg.exe add $RegistryPath /v "LockScreenImagePath" /t REG_SZ /d $LockScreenPath /f
reg.exe add $RegistryPath /v "LockScreenImageUrl" /t REG_SZ /d $LockScreenPath /f
reg.exe add $RegistryPath /v "LockScreenImageStatus" /t REG_SZ /d "1" /f
```
When I wrap it in a Win32 app and deploy it through Intune, the logs say it created the registry key and added the values successfully. However, when I check the registry later, I can't find either the PersonalizationCSP key or the values, and the lock screen remains the default one. Does anyone know why this might be happening?
2 Answers
It sounds like you might be hitting a snag with the PowerShell execution. Win32 app deployments typically run 32-bit PowerShell, which sends your registry entries to the WOW6432Node instead of the regular registry. Try adding this line at the start of your script to switch to the 64-bit version:
```powershell
If ($ENV:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
&"$ENV:WINDIRSysNativeWindowsPowershellv1.0PowerShell.exe" -File $PSCOMMANDPATH
}
```
This should ensure your entries land in the correct registry location. Hope this helps!
Just to follow up, I ran into the same issues and switching to 64-bit PowerShell did the trick. I ended up adapting my script to use commands that specifically target the 64-bit environment.
In my script, I handle lock screen wallpaper setup like this:
```powershell
New-Item -Path $RegKeyPath -Force | Out-Null
New-ItemProperty -Path $RegKeyPath -Name $LockScreenPath -Value $LockScreenImageValue -PropertyType STRING -Force | Out-Null
```
Make sure you're doing the same to directly create those properties rather than relying solely on reg.exe. It could help streamline the process.
Thanks for the suggestion! I was using reg.exe just in case, but I'll definitely try your way—seems more straightforward.

That was exactly the missing puzzle piece! I was troubleshooting in completely the wrong direction. Thanks for pointing that out! Testing it out now.