CMD:SET:SETX::%ABC%:??? -- Obtendo ENV "global"/"original" após alteração por SET

CMD:SET:SETX::%ABC%:??? -- Obtendo ENV "global"/"original" após alteração por SET

SET "temporariamente"define/altera um environment variable.

Como obtenho o "original"/"global"/"inalterado" de um shell/processo no qual ele foi alterado?


Para explicar o título: SETfunciona no que chamarei de escopo locale SETXem umglobalum.
%ABC%me dá a variável doescopo local, mas estou procurando algo para obtê-lo doglobalum.

Por isso SET: SETX:: %ABC%: ???

Responder1

Para evitar confusão com a terminologia usada em domínios em redes, em vez de 'local' diga 'por usuário', e em vez de 'global' diga 'por máquina' (para todos os usuários locais).

'Local' realmente significa 'somente nesta máquina' e pode significar paratodosusuários locais.

Variáveis ​​por máquina são armazenadas em

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

Variáveis ​​por usuário são armazenadas em HKEY_CURRENT_USER\Environment

SETX pode ser por usuário ou por máquina.

SET é temporário (durante a sessão CMD); SETX é permanente (armazenado no registro).

As variáveis ​​definidas com SETX não estão disponíveis em nenhuma sessão CMD que estava aberta no momento em que foi definida; estará disponível em novas sessões do CMD.

Para definir uma variável 'por máquina', use a opção /M com SETX.

Exemplo de demonstração:

Digite isto como Administrador:

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

Em seguida, abra outra janela cmd como usuário não administrador:

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

Embora "apps" abranja toda a máquina, %apps% obtém o valor para um usuário comum.

Portanto, o formato "%ABC%" obtém variáveis ​​de usuário e de máquina.

Para limpar essa variável, como administrador, façasetx apps "" /m

informação relacionada