You're not actually setting any environment variables of any form when you modify the registry.
Environment variables are not kept in the registry. What is kept in the registry is a template, from which programs like Windows Explorer (re-)construct their environment variables when notified to do so. Actual environment variables are per-process and are stored in each process' own address space, initially inherited from its parent process and modifiable thereafter at the process' whim. The programs like Windows Explorer participate in a voluntary protocol, whereby they will re-read the template, and update their own per-process environment whenever a Windows message is broadcast to all (top-level) windows on a desktop.
Many Win32 programs do not participate in this voluntary protocol. Microsoft's command interpreter is one such program. To modify an environment variable within a running Microsoft command interpreter process, one uses the ordinary command interpreter commands for modifying environment variables, such as
PATH. The modified environment will be inherited by every process that the command interpreter spawns.
Similarly, the modified environment in a Windows Explorer process is only inherited by processes that are spawned by Windows Explorer after it has received the message and re-read the template. The environment variables of an already running process are not affected by modifications made by other processes to their own environment variables. An already running Microsoft command interpreter won't magically gain a changed environment from the Windows Explorer process that spawned it before the change.
Other command interpreters differ. JP Software's TCC, for example, itself participates in the voluntary protocol. It will recognize the Windows message, and update its own per-process environment from the template in the registry, when its "Update Environment on System Change" setting is enabled.