为什么Microsoft决定将32位应用程序放在“Program Files(x86)”中?

时间:2008-11-16 02:27:32

标签: vista64

将64位应用程序放入“Program Files(x64)”并让32位应用程序在“Program Files”中运行,是否可以 更多

我有一个需要运行Flex编译器的批处理文件。在x64中,该程序位于“Program Files(x86)”中。在Windows Vista 32位上,它位于“程序文件” - 环境变量中?检查一下:

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86) 

我该怎么办?


set mxmlc="%ProgramFiles(x86)%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"
if NOT EXIST %mxmlc% set mxmlc="%ProgramFiles%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"

TNX

7 个答案:

答案 0 :(得分:7)

那没什么。猜猜 \ Windows \ System32 包含哪些内容?没错,64位DLL文件。那么他们在哪里决定放置32位遗留DLL文件? \ Windows \ SysWOW64 当然。

问题是,虽然Windows应用程序有内置工具来发现系统目录的位置,但许多应用程序不使用它们。而且,由于Microsoft首先是向后兼容的奴隶,所以我们会得到像这样的愚蠢的东西。

答案 1 :(得分:7)

使其便携:

SET ExecPath=%ProgramFiles(x86)%
IF "%ExecPath%"=="" SET ExecPath=%ProgramFiles%

答案 2 :(得分:1)

除非指定x86-64,否则通常假定x86为32位。为什么他们还需要自己的程序文件目录?

答案 3 :(得分:1)

编辑:我有一个需要运行FLEX编译器的批处理文件。在X64中该程序在Vista 32位的“Program Files(x86)”中它位于“Program Files”环境变量中? ..检查一下:

使用%ProgramFiles%环境变量并跳过所有这些麻烦。

答案 4 :(得分:1)

a。)只是因为默认安装位置的变化并不意味着你必须在那里安装东西。一个简单的注册表更改将使您的新安装在任何您想要的地方。我的所有人都去了一个单独的驱动器,进入我选择的文件夹。如果应用程序甚至无法通过注册表跟踪其安装路径,那么首先可能不值得安装。

b。)我假设他们将32位应用程序放入x86文件夹,因为它不是32位操作系统,也就是旧的东西。当你在他的旧狗屋睡觉时,你不会买一所新房子让你的狗睡在它里面,对吗?如果64位是向前迈出的一步,那么为什么要将旧版软件放在继续作为标准安装文件夹的位置?

答案 5 :(得分:0)

呃......我认为x86是指英特尔处理器架构,例如: 8086,80286,80386,80486和80586。

80386拥有第一个32位指令集,请参阅 x86 (维基百科)。

编辑:啊,问题得到澄清。

请参阅Stack Overflow问题 C# - How to get Program Files (x86) on Vista x64

答案 6 :(得分:-4)

因为微软喜欢让人们的事情变得更加复杂。他们没有简化过渡到64位的过程,而是分裂而且困难。