Index: base/system/userinit/userinit.c =================================================================== --- base/system/userinit/userinit.c (revision 40315) +++ base/system/userinit/userinit.c (working copy) @@ -539,7 +539,7 @@ static VOID SetUserPreference(UINT uiAction,BOOL bValue,UINT fWinIni) { DWORD dwvalue = bValue; - SystemParametersInfo(uiAction, 0, (PVOID)&dwvalue, fWinIni); + SystemParametersInfo(uiAction, 0, (PVOID)dwvalue, fWinIni); } static VOID SetUserPreferences(VOID) Index: dll/cpl/desk/appearance.c =================================================================== --- dll/cpl/desk/appearance.c (revision 40315) +++ dll/cpl/desk/appearance.c (working copy) @@ -222,7 +222,12 @@ static VOID _UpdateUserPref(UINT SpiGet,UINT SpiSet,BOOL *pbFlag) { - SystemParametersInfo(SpiSet, 0, (PVOID)pbFlag, SPIF_UPDATEINIFILE|SPIF_SENDCHANGE); + BOOL oldFlag; + + SystemParametersInfo(SpiGet, sizeof(BOOL), &oldFlag, 0); + if(oldFlag != *pbFlag) { + SystemParametersInfo(SpiSet, 0, (PVOID)*pbFlag, SPIF_UPDATEINIFILE|SPIF_SENDCHANGE); + } } #define UPDATE_USERPREF(NAME,pbFlag) _UpdateUserPref(SPI_GET ## NAME, SPI_SET ## NAME, pbFlag)