如何获取程序文件x86 env变量?


108

我想知道如何在命令提示符下显示程序文件(x86)的位置。我正在使用Windows 7 64位。

我试过了:

echo %programfiles(x86)%echo %programfiles%
两者仅显示C:\Program Files

当我手工检查注册表,
HKLM /软件/微软/窗/ CURRENTVERSION
programfilesdirC:\Program Files

HKLM /软件/ WOW64 /微软/的Winodws / CURRENTVERSION
programfilesdirC:\Program Files (x86)

但是,为什么我总是与C:\ Program Files一起显示?


10
我认为真正的问题是,为什么没有在Windows 7和Windows XP上都始终指向x86的%programfiles%版本来简化同时安装在两者上的运行程序?例如,在XP上安装Windows调试工具(x86)后,可以在程序文件中找到它,而在Windows 7中,可以在程序文件(x86)中找到它,这意味着没有简单的方法来创建可以在所有计算机上分发的命令文件。因为没有内置环境变量始终指向程序文件的32位位置。
2013年

[阅读所有答案后发布]恕我直言,本次讨论中遗漏的一点是,无论您使用什么变量,都可以保证始终指向适当的文件夹。在Windows安装在C:\以外的驱动器上的极少数情况下,这变得至关重要。
Amir Katz

Answers:


179

在以64位模式运行的64位计算机上:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

在以32位(WOW64)模式运行的64位计算机上:

  • echo %programfiles% ==> C:\Program Files (x86)
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

在以32位模式运行的32位计算机上:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> %programfiles(x86)%

18
在32位模式下的32位计算机上将返回什么%programfiles(x86)%?
伊万·科胡金

在Windows XP(x86)上不起作用,您需要放入%programfiles%。我认为唯一的方法是先通过代码检查OS版本,然后再使用一个变量或其他变量。
gsubiran 2014年

3
将%ProgramW6432%添加到上面的列表中可能是值得的。
Alex Wiese

2
同样适用于Windows 7的32位版本-没有%programfiles(x86)%环境变量
badsamaritan

1
我第二个@Alex Wiese,%ProgramW6432%将始终具有64位程序文件目录。%ProgramFiles(x86)%始终具有32位程序文件目录。这两个变量是稳定的……其他变量可能会根据运行64位OS(或命令提示符)的模式而变化
Jason

36

另一个相关的环境变量是:

%ProgramW6432%

因此,在以32位(WOW64)模式运行的64位计算机上:

  • 回声%programfiles%==> C:\ Program Files(x86)
  • 回声%programfiles(x86)%==> C:\ Program Files(x86)
  • echo%ProgramW6432%==> C:\ Program文件

维基百科

%ProgramFiles%变量指向Program Files目录,该目录存储Windows和其他所有已安装的程序。英文系统上的默认值为“ C:\ Program Files”。在Windows的64位版本(XP,2003,Vista)中,还有%ProgramFiles(x86)%(默认为“ C:\ Program Files(x86)”)和%ProgramW6432%(默认为“ C: \ Program Files”。%ProgramFiles%本身取决于请求环境变量的进程本身是32位还是64位(这是由Windows-on-Windows 64位重定向引起的)。

参考:http//en.wikipedia.org/wiki/Environment_variable


3
更好的参考:MSDN:WOW64实现细节 -“从Windows 7和Windows Server 2008 R2开始添加了ProgramW6432和CommonProgramW6432环境变量。” 维基百科直接与此矛盾。有趣的是,根据MSDN ,维基百科只列出了三个支持该变量的版本。不幸的是,我没有要测试的64位XP / Vista。
Lexikos

1
复读后,我发现Windows 7/2008 R2要求仅适用于64位进程。该变量仅在Vista x64上为32位进程定义。
Lexikos

4

在Windows 64位计算机上,echo%programfiles(x86)%确实会打印C:\ Program Files(x86)


0

恕我直言,本次讨论中遗漏的一点是,无论您使用什么变量,都可以保证始终指向适当的文件夹。在Windows安装在C:\以外的驱动器上的极少数情况下,这变得至关重要。


1
这是一个很好的笔记。但是,由于它不是直接回答问题,因此最好将其写为对问题本身的评论。
AbstractVoid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.