in Windows a new process gets a copy of the globally set system and user environment variables.
That's not my experience. I routinely spawn processes from my editor (an Emacs clone) and those processes get their environment from the editor, not from its parent, the Windows desktop shell. The environment seen in the System object is just what the desktop process loads when it starts. The desktop process is similar to the init process in Linux, the ancestor of all processes.