Also mir ist nicht ganz die Sequenz Deiner Beispiele klar, daher:
Das Ändern von Umgebungsvariablen innerhalb einer CMD.EXE persistiert den Wert nicht auf das
OS.
Wird der Kommandozeileninterpreter geschlossen, ist er mitsamt der geänderten ENV Variable futsch.
Das müsste zumindest für beide Beispiele in Deinem letzten Post gelten.
Dass jenachdem 32 oder 64bit Varianten des Interpreters gestartet werden, ist bemerkenswert, für die fehlende Persistierung aber unerheblich.
Das Setzen der Variable Path in cmd.exe und anschließende Abfragen in Delphi zeigt keine Änderung, weil beide in unterschiedlichen Umgebungen laufen.
Erst ein Kompilat, das den Wert abfragt und in der CMD.EXE Umgebung gestartet wird, nachdem die Änderung gemacht wurde, müsste das anzeigen.