Pcgamer27

Member
Joined
Mar 1, 2025
Messages
65
I have a problem I have a script that only uses the URL to change the wallpaper but I have this locally. How can I do this? for NTlite software

# Define the URL for the wallpaper
$url = 'https://images.alphacoders.com/137/1377548.png'
$outputPath = "$env:TEMP\wallpaper.png"

try {
# Download the wallpaper
Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 30 -OutFile $outputPath

# Function to set wallpaper
function Set-Wallpaper {
param (
[string]$ImagePath
)
Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
public class Wallpaper {
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fWinIni);
public static void Set(string path) {
Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "2"); // Center
Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "0");
SystemParametersInfo(20, 0, path, 3);
}
}
"@
[Wallpaper]::Set($ImagePath)
}

# Set the downloaded image as wallpaper
Set-Wallpaper -ImagePath $outputPath

# Clean up
Remove-Item $outputPath -ErrorAction SilentlyContinue

exit 0
}
catch {
Write-Error "Failed to download or set wallpaper: $_"
exit 1
 
Solution
To set a local image as the wallpaper in your NTlite post-setup script, just skip the Invoke-WebRequest part, and point directly to your local file (wherever you place it during deployment).
Modify your script as follows:

For a Local Wallpaper Image​

Suppose your image is copied to C:\NTLite\Assets\wallpaper.png during deployment:
Code:
# Path to your local wallpaper file
$ImagePath = "C:\NTLite\Assets\wallpaper.png"   # <-- Use your real local path!

# Function to set wallpaper
function Set-Wallpaper {
    param (
        [string]$ImagePath
    )
    Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
public class Wallpaper {
[DllImport("user32.dll", CharSet =...
To set a local image as the wallpaper in your NTlite post-setup script, just skip the Invoke-WebRequest part, and point directly to your local file (wherever you place it during deployment).
Modify your script as follows:

For a Local Wallpaper Image​

Suppose your image is copied to C:\NTLite\Assets\wallpaper.png during deployment:
Code:
# Path to your local wallpaper file
$ImagePath = "C:\NTLite\Assets\wallpaper.png"   # <-- Use your real local path!

# Function to set wallpaper
function Set-Wallpaper {
    param (
        [string]$ImagePath
    )
    Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
public class Wallpaper {
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fWinIni);
public static void Set(string path) {
Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "2"); // Center
Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "0");
SystemParametersInfo(20, 0, path, 3);
}
}
"@

}

# Set the local image as wallpaper
Set-Wallpaper -ImagePath $ImagePath

exit 0

Summary of Steps:

  1. Do NOT use Invoke-WebRequest—just leave out the download step.
  2. Place/copy your PNG/JPG/BMP into the target system folder during NTlite deployment.
  3. Reference its full path in $ImagePath when calling your function.

If you want the script to work for any local file, just ask the user to set $ImagePath to their own local file

Example for your NTlite post-setup:
Code:
$ImagePath = "C:\CustomAssets\wallpaper.png"   # Change to your actual file

# ...The rest as above
Set-Wallpaper -ImagePath $ImagePath
exit 0

No need for web URLs if you have a local image! If you need the NTlite XML post-setup block or how to copy the image as part of deployment, just let me know your workflow and I'll script that too!
 
Solution