Это сильно зависит от ОС и поэтому не стоит усилий, чтобы сделать это в C, потому что для каждой среды, которую вы поддерживаете, вам придется делать много кода, но, конечно, вам решать.
В Linux у вас есть несколько доступных инструментов, и вы можете посмотреть их исходный код.Я полагаю, что это даже зависит от типа графической среды, в которой вы находитесь. Для gnome есть gconftool-2, для KDE вы должны выглядеть сами, но это легко найти.Для Linux было бы разумнее сделать системный вызов, например:
char str[] = "gconftool-2 -t str --set /desktop/gnome/background/picture_filename /path_to_your/pic.png"; // adapt it
system(str);
вместо написания кода с нуля.
Для Windows здесь есть очень короткий пакетный скрипт, который должен быть легкоконвертировать: партия - изменить фон .Чтобы сделать это в C, вы записываете строки в текстовый файл с расширением .reg, затем делаете системный вызов, чтобы применить его.
Для Mac OS это тоже отличается, поэтому вам нужно быть более конкретным