CMD: CONJUNTO: SETX :: %ABC%: ??? -- Obtener ENV "global"/"original" después de modificarlo con SET

CMD: CONJUNTO: SETX :: %ABC%: ??? -- Obtener ENV "global"/"original" después de modificarlo con SET

SET "temporalmente"establece/cambia un environment variable.

¿Cómo obtengo el "original"/"global"/"sin cambios" de un shell/proceso en el que se ha modificado?


Para explicar el título: SETfunciona en lo que llamaré un alcance localy SETXen unglobaluno.
%ABC%me consigue la variable delalcance local, pero estoy buscando algo para obtenerlo delglobaluno.

De este modo SET: SETX:: %ABC%: ???

Respuesta1

Para evitar confusiones con la terminología utilizada en dominios en redes, en lugar de "local", diga "por usuario" y en lugar de "global", diga "por máquina" (para todos los usuarios locales).

"Local" en realidad significa "sólo en esta máquina" y podría significar paratodousuarios locales.

Las variables por máquina se almacenan en

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Las variables por usuario se almacenan en HKEY_CURRENT_USER\Environment

SETX puede ser por usuario o por máquina.

SET es temporal (durante la sesión CMD); SETX es permanente (almacenado en el registro).

Las variables configuradas con SETX no están disponibles en ninguna sesión CMD que estuviera abierta en el momento en que se configuraron; Estará disponible en nuevas sesiones de CMD.

Para configurar una variable 'por máquina', use la opción /M con SETX.

Demostración de ejemplo:

Ingrese esto como Administrador:

C:\WINDOWS\system32>setx apps %SystemDrive%\apps /m
SUCCESS: Specified value was saved.

Luego abra otra ventana de cmd como usuario no administrador:

C:\Users\jh>echo %apps%
C:\apps

Aunque las "aplicaciones" son para toda la máquina, %apps% obtiene el valor para un usuario normal.

Entonces, el formato "%ABC%" obtiene variables tanto de usuario como de máquina.

Para borrar esa variable, como administrador, hagasetx apps "" /m

información relacionada