2013-07-16 409 views
27

当我在32位Windows操作系统上使用环境变量%PROGRAMFILES(x86)%时(如Windows XP,Vista等较早版本的Windows)会怎么样?在Windows操作系统32位上使用%PROGRAMFILES(x86)%

我希望它会简单地解析为:C:/Program Files。这会发生吗?

+0

'%PROGRAMFILES%'将解析为64位程序的文件夹,但是重新没有任何阻止你制​​作自己的[%PROGRAMFILES(x86)%](http://stackoverflow.com/questions/17312348/how-do-i-set-windows-environment-variables-permanently)变量 – Gary

回答

36

根据to this环境变量%PROGRAMFILES(x86)%仅在64位系统上可用。

但是,如果您在64位系统上并使用%PROGRAMFILES%,则得到的结果取决于请求环境变量的进程是32位还是64位。

因此,从64位系统上的64位进程中,您将得到C:\Program Files,从64位系统上的32位进程获得C:\Program Files (x86),并从32位进程获得32位进程,你会得到C:\Program Files

如果这没有帮助,也许您可​​以评论或编辑您的原始问题,使其具体说明您正在尝试做什么。就目前来看,你的问题的答案是“不”。

+0

谢谢,它作品如何说它的作品。尽管维基百科条目有点误导,但对人们的警告。 –

+4

“如何使用32位和64位计算机共享的批处理文件查找特定的32位程序”。要做到这一点,您需要一个在32位系统上评估为c:\ program文件或在64位系统上评估为c:\ program files(x86)的变量。即%ProgramW6432% – OJW

+0

所以,问题是:如何从运行在64位系统上的32位软件访问程序文件的64位路径? –

-13

如果您在32位计算机/笔记本电脑上使用%programfiles%,它将打开C:\Program Files

如果您在64位计算机/笔记本电脑上使用%programfiles%,它将打开C:\Program Files

如果您在32位计算机/笔记本电脑上安装了64位程序,它将安装在名为Program Files (x64)的新文件夹中,该文件夹位于“C”驱动器中。在这种情况下,您必须使用。

如果您在64位计算机/笔记本电脑上安装了32位程序,它将安装在名为Program Files (x86)的新文件夹中,该文件夹位于“C”驱动器中。在这种情况下,您必须使用%programfiles(x86)

+1

我猜部分原因是人们低估的原因是因为“如果你在32位计算机/笔记本电脑上安装了64位程序”,这当然显然是不可能的,这是无稽之谈。 –

2

Keith Hill回答了这个问题here,总结:

${env:ProgramFiles(x86)}是不是一个32位机

的定义。如果你总是希望把/从x86的目录中获取数据/,然后您可以使用此代码来确定文件路径:

$file = "\file" 
if ("${Env:ProgramFiles(x86)}") 
{ 
    $fullPath = "${Env:ProgramFiles(x86)}\$file" 
} 
else 
{ 
    $fullPath = "${Env:ProgramFiles}\$file" 
} 
相关问题