but saveUserPreset() write PRESET FILE at the root of the drive where the executable is running from...
This is of course complete bullshit and shouldn't happen. How the method works is that it creates a sibling file to the currently loaded user preset, but if nothing is loaded, then it does weird things like you described.
A temporary workaround until I find the time to fix this correctly is to make sure that a user preset is loaded before you call Engine.saveUserPreset()...