using System.Runtime.InteropServices;
using System.Drawing;
using Microsoft.Win32;
public class Wallpaper
{
    const int SPI_SETDESKWALLPAPER = 20;
    const int SPIF_UPDATEINIFILE = 0x01;
    const int SPIF_SENDWININICHANGE = 0x02;
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern int SystemParametersInfo(
        int uAction, int uParam, string lpvParam, int fuWinIni);
    public enum Style : int
    {
        Tiled, Centered, Stretched
    }
    public void SetWallpaper(string path, Style style)
    {
        RegistryKey key = Registry.CurrentUser.OpenSubKey(
            "Control Panel\\Desktop", true);
        switch( style )
        {
            case Style.Stretched :
                key.SetValue(@"WallpaperStyle", "2") ; 
                key.SetValue(@"TileWallpaper", "0") ;
                break;
            case Style.Centered :
                key.SetValue(@"WallpaperStyle", "1") ; 
                key.SetValue(@"TileWallpaper", "0") ; 
                break;
            case Style.Tiled :
                key.SetValue(@"WallpaperStyle", "1") ; 
                key.SetValue(@"TileWallpaper", "1") ;
                break;
        } 
        SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, 
            SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
    }
}
نحوه ی استفاده :
private void setButton_Click(object sender, EventArgs e)
{
    Wallpaper w = new Wallpaper();
    w.SetWallpaper(fileName, 
        (Wallpaper.Style)Enum.Parse(typeof(Wallpaper.Style  ), "Tiled"));
}
منبع : http://blogs.msdn.com/coding4fun/arc...31/912569.aspx
چند نمونه برنامه ی آماده :
http://www.codeproject.com/KB/cs/wallpaperchanger.aspx
http://www.codeproject.com/KB/applic...allpaperq.aspx