Por que o comando set exibe mais variáveis de ambiente do que as variáveis de ambiente gui?

1

Quando executo o comando set no prompt de comando, a primeira variável que vejo é

MasquandoeuabrominhaGUIdeVariáveisdeAmbiente,nãovejoALLUSERSPROFILE

Por que isso? Existem inúmeras outras variáveis listadas em set que também não aparecem na GUI. Eles não deveriam mostrar a mesma informação?

    
por David Grinberg 03.05.2015 / 21:13

2 respostas

2

Após um pouco de tentativa e erro, descobri que essas variáveis de ambiente são as adicionais relatadas por SET no meu sistema Windows 8.1:

ALLUSERSPROFILE
APPDATA
CommonProgramFiles
CommonProgramFiles(x86)
CommonProgramW6432
COMPUTERNAME
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
LOGONSERVER
ProgramData
ProgramFiles
ProgramFiles(x86)
ProgramW6432
PROMPT
PUBLIC
SESSIONNAME
SystemDrive
SystemRoot
USERDOMAIN
USERDOMAIN_ROAMINGPROFILE

Eu suspeito que eles sejam todos gerados e atualizados automaticamente pelo Windows, o que provavelmente é o motivo de eu não conseguir encontrar alguns deles listados em algum lugar no Registro do Windows.

Eu sei que HOMEDRIVE , HOMEPATH e HOMESHARE são atualizados automaticamente de < a href="https://social.technet.microsoft.com/Forums/windowsserver/en-US/e9d9cd4d-6882-459e-b7a8-7091cfa031d2/where-are-user-environment-variables-homedrive-homepath-set? forum = winserverTS "> esta postagem dos Fóruns do TechNet .

Eu tentei alterar permanentemente a variável PROMPT para algo diferente de $P$G (que é o padrão) usando SETX e observei que ela criou uma nova variável de ambiente PROMPT nas Variáveis de usuário para & lt ; nome de usuário > seção na GUI de Variáveis de Ambiente.

Ao excluir essa variável, meu prompt foi redefinido de volta para $P$G . Eu notei o mesmo comportamento com a variável de ambiente COMPUTERNAME .

O mesmo vale para:

PROCESSOR_ARCHITECTURE
ProgramFiles
ProgramW6432
CommonProgramFiles
CommonProgramW6432

conforme explicado neste artigo do MSDN sobre a Implementação do WOW64 Detalhes .

    
por 03.05.2015 / 23:57
1

De acordo com SS64.com (seção Autoexec.bat), essas variáveis podem ser variáveis de tempo de inicialização , que "não estão disponíveis para programas gui de 32 bits". Desde o Windows XP, as variáveis de ambiente de tempo de inicialização devem ser definidas com o registro em:
HKEY_CURRENT_USER\Environment (variáveis de ambiente USER) ou:% HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment (variáveis de ambiente SYSTEM )
, conforme mostrado em KB da Microsoft

    
por 03.05.2015 / 23:28