为什么 Windows 7 在 Program Files (x86) 文件夹中安装 64 位应用程序?我可以更改此行为吗?

为什么 Windows 7 在 Program Files (x86) 文件夹中安装 64 位应用程序?我可以更改此行为吗?

自从 CTP 以来,我一直在使用 64 位版本的 Windows 7,在安装C:\Program Files (x86)文件夹中的应用程序时遇到了一些问题。设置 2 个单独的 Program Files 目录到底有什么用?

我安装的每个程序都进入了该C:\Program Files (x86)文件夹。应用程序是 32 位还是 64 位似乎并不重要。为什么不放置 64 位应用程序C:\Program Files

有没有办法将默认值改为C:\Program Files如果我把所有东西都放进去,会把事情弄乱吗C:\Program Files

如果为 64 位应用程序设置单独的文件夹确实有好处,那么更明智的做法似乎是默认使用C:\Program Filesx86 应用程序,并C:\Program Files (x64)为新的 64 位应用程序创建一个新文件夹。这将有助于保持向后兼容性。我是一名软件开发人员,我的一些项目包含对 下的库的路径引用C:\Program Files。现在,这些引用在将它们放在 的 Windows 7 计算机上被破坏了C:\Program Files (x86)。我甚至尝试将安装程序中的目标位置更改为C:\Program Files,但这被忽略了,应用程序还是进入了C:\Program Files (x86)

这非常令人沮丧,因为我需要在 32 位和 64 位机器之间共享源代码,并且我不想弄乱一些配置文件,这些配置文件在不同的机器上以不同的方式设置这些库的路径。

关于环境变量的编辑:(为简单起见,仅使用变量的默认英文值。)在 64 位机器上将%ProgramFiles%C:\Program Files,而全新的变量%ProgramFiles(x86)%将是C:\Program Files (x86)。因此,如果您有一个 32 位程序需要找到它将安装在的文件夹路径,则需要检查它是在 32 位还是 64 位版本的 Windows 上运行,以便知道要使用哪个环境变量。任何在编写时没有考虑到这一点的 32 位应用程序都需要更新才能在 64 位机器上正常工作。因此,即使使用环境变量,向后兼容性也会被破坏。

此外,%ProgramFiles(x86)%在 32 位版本的 Windows 上不存在。如果存在,那么 32 位应用程序就可以始终使用该环境变量,而不需要任何基于其所运行操作系统的条件逻辑。

答案1

造成这种情况的原因很简单,许多旧的安装程序要么不理解新的文件结构,要么将所有内容都放在标准程序文件目录中,或者您正在查看一个智能程序,该程序有几个 32 位组件被复制到那里。

最好的办法是下载一个新程序 - 例如x64 压缩包并查看其安装位置以排除您的机器的问题。

至于弄乱东西 - 可以,但这实际上取决于程序,没有一个答案适合所有情况...一些只有几个文件的较小、紧凑的程序应该没有问题,但是,如果你谈论 Office、Adobe 或任何其他“套件”或大型程序,它很可能会失败,因为它们有许多跨架构的共享组件。

答案2

%ProgramFiles%如果您使用除(或CSIDL_PROGRAM_FILES,或 .NET 下的)之外的任何内容,Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)那么您就会遇到麻烦,因为自定义安装可以将程序安装在其他卷(例如 D:)下,并且国际安装通常默认有其他文件夹。

  • 西班牙窗户: C:\Archivos de Programa,
  • 落地窗: C:\Programmes,
  • 德国窗户:C:\Programme
  • 瑞典窗户:C:\Program

ETC。

答案3

请注意,在 64 位版本的 Windows 7 下(这也可能适用于其他较新的操作系统版本,但我只能针对 Win 7 64 位确认这一点),%ProgramFiles% 在资源管理器和 DOS 中的父位置存在差异。

在 Windows 7 下,%ProgramFiles%(以及相关的%ProgramFiles(x86)%环境变量)的实际物理文件夹位置是根据英文版本修复;即分别为“C:\Program Files”和“C:\Program Files (x86)”,但在本地化资源管理器中显示作为适当的。

举一个具体的例子;在瑞典的 Windows 7 64 位安装中,如果你打开资源管理器并查看系统驱动器(通常为 C:),你会看到“程序“ 和 ”程序(x86)“文件夹。在地址栏中输入 %ProgramFiles% 即可进入“C:\Program”。

但是,如果您打开 DOS 框并键入 SET,您将看到 %ProgramFiles% 的实际值是“C:\Program Files”,而不是资源管理器显示的“C:\Program”。使用 CD 和 DIR 进一步探索,您会发现它实际上是“C:\Program Files”

寓意是,如果您使用环境变量或通过 API 编程,一切仍将正常工作,但在探索文件系统时请注意这种细微的变化!

相关内容