在Windows OS 32位上使用%PROGRAMFILES(x86)%

时间:2013-07-16 23:39:11

标签: windows environment-variables

在32位Windows操作系统(例如Windows XP,Vista等旧版Windows)上使用环境变量%PROGRAMFILES(x86)%时会发生什么?

我希望它只会解决:C:/Program Files。会发生这种情况吗?

4 个答案:

答案 0 :(得分:44)

根据to this,环境变量%PROGRAMFILES(x86)%仅适用于64位系统。

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

因此,在64位系统上的64位进程中,您将得到C:\Program Files,在64位系统上从32位进程获得C:\Program Files (x86),从32位进程获得C:\Program Files在32位系统上的位过程,您将获得{{1}}。

如果这没有帮助,也许您可​​以评论或编辑原始问题,使其具体到您要执行的操作。按照目前的情况,你的问题的答案是“不”。

答案 1 :(得分:3)

Keith Hill回答了这个问题here,摘要:

  

${env:ProgramFiles(x86)}未在32位计算机上定义

如果您总是希望将数据放入/取出x86目录,那么您可以使用此代码来确定文件路径:

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

答案 2 :(得分:2)

由于%ProgramFiles(x86)%在Windows 7 32位系统上未定义,因此这是我想出的解决方法:

SET MyPath="%ProgramFiles(x86)%\MyFolder\MyApplication.exe"
rem workaround for Windows7 32 bit:
IF NOT DEFINED ProgramFiles(x86) SET MyPath="%PROGRAMFILES%\MyFolder\MyApplication.exe"

用例:我想从已安装的批处理文件中调用应用程序:

  • 在Windows 7上的32位C:\ Program Files \ MyFolder \ MyApplication.exe
  • 在Windows 7 64位上的C:\ Program Files(x86)\ MyFolder \ MyApplication.exe中

这样%MyPath%总是指向正确的路径。

答案 3 :(得分:-14)

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

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

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

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