Working with the Windows Registry

teh_sAbEr teh.saber at
Wed Jun 25 22:48:02 EDT 2008

Hi everybody. I'm trying to write a script that'll change desktop
wallpaper every time its run. Heres what I've gotten so far:

#random wallpaper changer!
import _winreg
from os import walk
from os.path import exists
from random import randint

#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel

def GenerateListOfWallpapers():
    targetDir = 'C:\Documents and Settings\Enrico Jr\My Documents\Jr
\'s Wallpapers'
    fileNames = []
    filePaths = []
    if exists(targetDir):
        #proceed to make the list of files
        for x,y,z in walk(targetDir):
            for name in z:
        for item in fileNames:
            filePaths.append(targetDir + '\\' + item)
        return filePaths

def RandomlySelectWallpaper(filePaths):
    index = randint(0,len(filePaths)-1)
    RandomlySelectedWallpaper = filePaths[index]
    return RandomlySelectedWallpaper #it should be a string...

#now to edit the wallpaper registry key
newWallpaper = RandomlySelectWallpaper(GenerateListOfWallpapers())
print "Registry Handle Created."
print "Random wallpaper selected."
print "New wallpaper value set."

The problem is, every time I run it, I get an "Access Denied" error
when it tries to execute
_winreg.SetValueEx(), even though i've opened the key with the
KEY_SET_VALUE mask like it said in the help docs. Could there be
another problem or a better way to do this?

More information about the Python-list mailing list