【问题标题】:Why did Microsoft decide to put 32-bit applications in "Program Files (x86)"?为什么微软决定将 32 位应用程序放在“Program Files (x86)”中?
【发布时间】:2010-09-22 13:02:44
【问题描述】:

将 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

【问题讨论】:

  • 我叫火焰诱饵。对结束这个话题有任何异议吗?
  • 也许如果我在你决定撕毁之前得到一个明智的答案 - ??
  • 32 位与 64 位架构问题绝对与编程相关。
  • @Scott - 我试图想出一种方法来编辑它,使其与编程更加相关,而不是像火焰一样,但不能。如果你或其他人能想出一些改变它的方法,我不会有任何问题重新打开它。
  • 好的。让我尝试编辑,因为我确实面临一个我需要回答的问题

标签: vista64


【解决方案1】:

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

【讨论】:

  • 是的 .. 这是一个更好的问题。 !!该死的,真烦人
  • 我不知道,我更喜欢将它们分开(看起来更整洁)。虽然如果它们都是“程序文件”的子文件夹会更好。
【解决方案2】:

因为微软喜欢让人们的事情变得更复杂。他们没有简化向 64 位的过渡,而是将其划分和困难。

【讨论】:

  • 是的,他们非常讨厌你。 叹息
  • 我从来没有说过他们恨我,但我希望他们成功地避免了 64 位分叉。
【解决方案3】:

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

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

编辑:啊,问题已经澄清了。

查看堆栈溢出问题C# - How to get Program Files (x86) on Vista x64

【讨论】:

    【解决方案4】:

    这没什么。猜猜 \Windows\System32 包含什么?没错,64 位 DLL 文件。那么他们决定将 32 位旧版 DLL 文件放在哪里呢? \Windows\SysWOW64 当然。

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

    【讨论】:

    • 就是喜欢那些 Windows 的一致性。另外,在 64 位任务管理器中,32 位进程以“*32”为后缀,而不是“x86”
    • @ajryan 当然是,对于他最初的问题。许多软件供应商对他们不应该做的事情进行硬编码,而 MS 病态地反对破坏性更改。
    【解决方案5】:

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

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

    【讨论】:

    • flex 编译器不在 %ProgramFiles% 下 .. 它在 %ProgramFiles(x86)% 下,但仅在 vista x64 上
    • 是的,但是如果您在 32 位上下文中运行,%ProgramFiles% 指向 x86 文件夹
    【解决方案6】:

    使其便携:

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

    【讨论】:

    • 设置一个名为“ExecPath”的环境变量,包括空格。您应该删除等号周围的空格。环境变量的值也会包含双引号,这会破坏您的比较。
    • 这对任何人都有效吗?在 32 位 2k3 VM 上,环境变量 ExecPath 的值为 %ProgramFiles(x86)%。不是“C:\Program Files (x86)”,而是带有百分号的 %ProgramFiles(x86)%。
    • 我刚刚做了一些更正 - 运算符周围的间距和额外的引号已修复。
    【解决方案7】:

    a.) 仅仅因为默认安装位置发生变化并不意味着您必须在那里安装东西。一个简单的注册表更改将使您的新安装到您想要的任何地方。我的都转到一个单独的驱动器,放入我选择的文件夹中。如果应用程序甚至无法通过注册表跟踪其安装路径,那么它可能一开始就不值得安装。

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

    【讨论】:

    • a) 如果您阅读它的问题与在默认位置安装了工具的不同 pc 上开发有关,这是一个 不同 位置,具体取决于操作系统 b ) 如果你正在开发一个产品,那么有意义的是不要打破旧的,而是为新的创造一个新的地方。
    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多