次のレジストリに値キーを作成してみてはどうでしょうか。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
これにより、ユーザーがログインするたびに背景が変更されます。
SetDesktopBackground.py
試してみるには、次のスクリプトを作成し、好きな場所に名前を付けます。
#!python
from ctypes import *
from os import path
SPI_SETDESKWALLPAPER = 0x14
SPIF_UPDATEINIFILE = 0x1
lpszImage = path.join(path.dirname(path.realpath(__file__)), 'your_image.jpg')
SystemParametersInfo = windll.user32.SystemParametersInfoA
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, lpszImage, SPIF_UPDATEINIFILE)
your_image.jpg
画像を同じディレクトリに置くのを忘れないでください。次に、レジストリ エディターを開きます。
Start > Search > type regedit.exe
次に、パスに移動します。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
右クリックしNew > String Value
て、この値に好きな名前を選択して入力します。
この新しい値を右クリックして を選択Modify
し、Data Value
フィールドに次のように記述します。
"C:\Python26\pythonw.exe" "C:\Path\To\SetDesktopBackground.py"
テストするには、ログアウトしてから再度ログインします。このユーザーがログインするたびに背景が変わるはずです。
これは手動で行う方法でした。アプリケーションで_winregを使用して、インストール中に値を作成できます。
#!python
from _winreg import *
from sys import executable
from os import path
subkey = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
script = 'C:\\Path\\To\\SetDesktopBackground.py'
pythonw = path.join(path.dirname(executable), 'pythonw.exe')
hKey = OpenKey(HKEY_CURRENT_USER, subkey, 0, KEY_SET_VALUE)
SetValueEx(hKey, 'MyApp', 0, REG_SZ, '"{0}" "{1}"'.format(pythonw, script))
CloseKey(hKey)