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

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

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

insira a descrição da imagem aqui

Mas quando abro minha GUI de variáveis ​​de ambiente, não vejoALLUSERSPROFILE

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Por que é que? Existem inúmeras outras variáveis ​​listadas setque também não aparecem na GUI. Todos eles não deveriam mostrar as mesmas informações?

Responder1

Depois de algumas tentativas e erros, descobri que essas variáveis ​​de ambiente são as adicionais relatadas SETem meu sistema Windows 8.1:

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

Suspeito que todos eles sejam gerados e atualizados automaticamente pelo Windows, provavelmente por isso não consegui encontrar alguns deles listados em nenhum lugar do Registro do Windows.

Eu sei disso HOMEDRIVEe HOMEPATHestouHOMESHAREatualizado automaticamentedeesta postagem nos fóruns do TechNet.

Tentei alterar permanentemente a PROMPTvariável para algo diferente de $P$G(que é o padrão) usando SETXe notei que ela criou uma nova PROMPTvariável de ambiente noVariáveis ​​de usuário para <nomedeusuário> seção na GUI de variáveis ​​de ambiente.

Ao excluir essa variável, meu prompt foi redefinido para $P$G. Notei o mesmo comportamento com COMPUTERNAMEa variável de ambiente. O mesmo vale para:

CommonProgramFiles
CommonProgramW6432
PROCESSOR_ARCHITECTURE
ProgramFiles
ProgramW6432

como explicado nesteArtigo do MSDN sobre detalhes de implementação do WOW64.

Responder2

De acordo comSS64.com(seção Autoexec.bat), essas variáveis ​​podem sertempo de inicializaçãovariáveis, que "não estão disponíveis para programas GUI de 32 bits". Desde o Windows XP, as variáveis ​​de ambiente de inicialização devem ser definidas com o registro em:
HKEY_CURRENT_USER\Environment (variáveis ​​de ambiente do USUÁRIO)ou:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment(variáveis ​​de ambiente do SISTEMA)
como mostrado emKB da Microsoft

informação relacionada