为什么 set 命令显示的环境变量比环境变量 gui 更多?

为什么 set 命令显示的环境变量比环境变量 gui 更多?

当我在命令提示符中运行set命令时,我看到的第一个变量是

在此处输入图片描述

但当我打开环境变量 GUI 时,我看不到ALLUSERSPROFILE

在此处输入图片描述

在此处输入图片描述

这是为什么?列出的许多其他变量set也没有显示在 GUI 中。它们不应该都显示相同的信息吗?

答案1

经过反复试验后,我发现这些环境变量是SET我的 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

我怀疑它们都是由 Windows 自动生成和更新的,这可能就是为什么我无法在 Windows 注册表的任何地方找到它们的原因。

我知道HOMEDRIVEHOMEPATH并且HOMESHARE自动更新此 TechNet 论坛帖子

我尝试永久地将变量更改为除默认变量PROMPT之外的其他变量 ,并注意到它 在$P$GSETXPROMPT<用户名> 的用户变量 环境变量 GUI 中的部分。

删除该变量后,我的提示被重置回$P$G。我注意到环境变量也有同样的行为COMPUTERNAME。以下情况也是如此:

CommonProgramFiles
CommonProgramW6432
PROCESSOR_ARCHITECTURE
ProgramFiles
ProgramW6432

正如本文所解释的有关 WOW64 实施细节的 MSDN 文章

答案2

根据SS64.com(Autoexec.bat 部分),这些变量可能是开机时间变量,这些变量“不适用于 32 位 GUI 程序”。从 Windows XP 开始,应使用注册表设置启动时环境变量:
HKEY_CURRENT_USER\Environment (用户环境变量)或者:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment(系统环境变量)
如图所示微软的知识库

相关内容