Index: base/system/userinit/userinit.c =================================================================== --- base/system/userinit/userinit.c (revision 40603) +++ base/system/userinit/userinit.c (working copy) @@ -538,8 +538,7 @@ static VOID SetUserPreference(UINT uiAction,BOOL bValue,UINT fWinIni) { - DWORD dwvalue = bValue; - SystemParametersInfo(uiAction, 0, (PVOID)&dwvalue, fWinIni); + SystemParametersInfo(uiAction, 0, IntToPtr(bValue), fWinIni); } static VOID SetUserPreferences(VOID) @@ -556,7 +555,6 @@ if (rc == ERROR_SUCCESS) { Size = sizeof(USERPREFERENCESMASK); - ERR("USERPREFERENCESMASK size: %d\n",Size); rc = RegQueryValueEx(hKey, L"UserPreferencesMask", Index: dll/cpl/desk/appearance.c =================================================================== --- dll/cpl/desk/appearance.c (revision 40603) +++ 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, IntToPtr(*pbFlag), SPIF_UPDATEINIFILE|SPIF_SENDCHANGE); + } } #define UPDATE_USERPREF(NAME,pbFlag) _UpdateUserPref(SPI_GET ## NAME, SPI_SET ## NAME, pbFlag)