为什么 ProgramFiles 变量的值在 cmd.exe 和 PowerShell 中不同?

Why is the value of the ProgramFiles variable different in cmd.exe and PowerShell?

我在 64 位 PC 上使用 Windows 7 Professional SP1。如果我打开 PowerShell 控制台并查看 $env:ProgramFiles,它的值为“C:\Program Files (x86)”。但是,如果我打开 cmd.exe 并查看 %ProgramFiles%,它的值是“C:\Program Files”。

有人能解释一下为什么它们不同吗?我本来希望它们要么是相同的,要么 cmd.exe 是认为它生活在 32 位环境中的那个。

您打开了 32 位 Power Shell: Windows Power Shell (x86)

变量的值取决于调用进程的位数。 如果您打开 32 位 CMD.EXE,(%windir%\SysWoW64\cmd.exe) %ProgramFiles% 也会指向 x86 文件夹。