Windows为我们提供了一个图形用户界面(GUI),我们可以在其中查看可用的环境变量,这些变量可以在Config App>系统>关于>高级系统设置>环境变量。在那里我们可以看到系统和用户环境变量。
目前它可能显示以下用户变量:
- 路径
- 温度
- TMP
- PATHEXT
- OneDrive
系统变量如下:
- ComSpec
- 驱动程序数据
- OS
- 路径
- PATHEXT
- PROCESSOR_体系结构
- PS模块路径
- 温度
- TMP
- 用户名
- windir
- 处理器数量
- 处理器级别
- 处理器标识符
- 处理器_视觉
考虑到CMD的实例将接收其父进程的环境块的副本——我想最初是Windows本身——我希望它拥有这些变量的精确副本,仅此而已。然而,当我运行SET
命令时,会有更多的环境变量,而不仅仅是上面列出的那些。
";额外的";显示的变量:
- ALLUSERSPROFILE
- APPDATA
- CommonProgramFiles
- CommonProgramFiles(x86)
- 通用程序W6432
- 计算机名
- FPS_BROWSER_APP_PROFILE_STRING
- FPS_BROWSER_USER_PROFILE_STRING
- HOMEDRIVE
- 归路
- LOCALAPPDATA
- 登录服务器
- 程序数据
- 程序文件
- 程序文件(x86)
- 程序W6432
- 提示
- 公众
- 会话名称
- 系统驱动器
- SystemRoot
- 用户域
- 用户域漫游配置文件
- 用户配置文件
为什么SET
命令显示的变量比GUI显示的变量多?SET列出的其他环境变量在哪里?
登录时,winlogon.exe(旧NT中的GINA)加载用户配置文件并初始化基本环境,然后启动userinit.exe,在userinit启动Explorer之前,它会运行登录脚本并更新环境。USERNAME和COMPUTERNAME当然是特定于用户和机器的。像APPDATA这样的东西来自用户shell文件夹路径。