По крайней мере в Windows 7 64-bit я обнаружил, что команда rundll32.exe работает, но только не каждый раз. У меня нет теории, почему, но мой обходной путь был .cmd файл, который вызывает его много раз. Это не элегантно, но работает каждый раз. В нашей среде мы запускаем его в фоновом режиме асинхронно и невидимо, поэтому тот факт, что он работает около 80 секунд, просто не имеет значения.
:: Do your stuff to apply the background .reg settings first
:: Then run UpdatePerUserSystemParameters many times
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
timeout 1
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
timeout 1
:: Etc. I have about 80 of them