为什么我们需要 Windows 中的“Program Files”文件夹?

ila*_*sch 23 windows

从 Windows \xe2\x80\x9cProgram Files\xe2\x80\x9d 文件夹运行的可执行文件在执行以下程序时是否表现不同C:\\SomeFolder

\n

也许涉及 UAC/委托/其他安全层?或者它只是一个保存第三方应用程序的地方,仅此而已。

\n

squ*_*man 36

从技术上讲,程序可以安装或驻留在任何地方。

\n

将已安装的程序存储在公共文件夹下可以增加组织的好处,因此可以快速直观地识别它们,并且可以快速轻松地应用安全和其他策略。

\n

这就是文件夹的全部功能。从执行的角度来看,它与任何其他文件夹之间通常没有技术差异。

\n

请注意,除了这篇文章之外,我从未见过任何明确的参考资料来支持这一点,我从未见过任何明确的参考资料来支持这一点,我不认为这篇文章是绝对结论性的(即使来自 Raymond Chen)。该链接的兴趣摘录是

\n
\n

将时钟倒回到 Windows 3.1。Microsoft 没有\xe2\x80\x99 提供有关应用程序默认安装位置的指导。结果,他们到处走走。有些安装到 C: 驱动器的根目录中。一些\n安装到 C:\\LitWare 目录。有些安装到 Windows\n目录中。一片混乱。引入程序文件是为了给混乱带来秩序。可以将其视为停车场中的油漆线。

\n
\n

然而,一个例外是在 64 位安装中运行的 32 位可执行文件。 \\Program Files在 64 位安装中,保存二进制文件的 64 位副本,而\\Program Files (x86)保存 32 位副本。如果 32 位可执行文件查找\\Program Files(历史上这是 64 位版本的 Windows 可用之前所有程序文件的位置),那么 WOW64 将重定向 32 位可执行文件以查找\\Program Files (x86)它需要的其他 32 位二进制文​​件。这使得程序可以有 32 位和 64 位版本。

\n

  • 作为 Windows 3.1 时代的人,我可以证实“应用程序无处不在”的说法。此外,许多程序在安装在包含空格的目录中时会崩溃,因此让默认目录包含空格迫使软件开发人员修复该问题。 (26认同)
  • 很多东西仍然安装在 `C:\<product>` 或 `C:\<manufacturer>\<product>` 中。这真的很烦人。对于只需复制即可运行且无需安装的小型程序,我使用“c:\utils”文件夹,该文件夹还包含批处理文件和其他命令行脚本。但是将可执行文件分类为某种结构会更整洁,并且使跟踪更容易 (6认同)
  • 另请注意,“C:\Program Files”的默认权限与“C:\”不同。在后者中,普通用户可以创建文件夹(可能是出于向后兼容性的原因)。默认情况下,“程序文件”具有更严格的安全性。 (5认同)
  • @Giacomo1968 也许[这个](https://www.thewindowsclub.com/change-default-program-files-directory-windows) 存在“Program Files”或[这里](https://devblogs.microsoft. com/oldnewthing/20220329-00/?p=106404)用于区分 x86 和 x64 版本的程序。将所有程序安装到一个公共目录中一直是很常见的事情,例如 Unix 的“/usr/local/bin”。 (3认同)
  • 唯一能告诉你并给出一定回应的人就是微软。其他的一切都是猜测。 (2认同)

Phi*_*ipp 17

默认情况下,Windows (10) 对 Program Files 文件夹设置某些权限。

这些是在 C 中创建的常规文件夹的权限: 普通权限

这些是程序文件的权限:

程序文件权限

您在这里可以看到的是:

  • 普通用户可以执行程序,但不能进行更改
  • 应用程序可以读取和执行其他程序,但不能对其进行更改(甚至不能对其自身进行更改)
  • “受信任的安装者”和管理员拥有完全控制权

这意味着您需要管理员权限(或需要运行受信任的安装程序)才能将程序放置在“程序文件”中,但一旦放置在那里,任何人都可以运行这些程序。这可以防止恶意程序修改其他程序,并防止没有管理员权限的用户安装不受信任的程序。此外,程序不再能够写入自己的目录(这是 32 位时代的常见做法)。这可以阻止永久更改程序的安全漏洞,并强制程序将所需的任何持久数据写入%appdata%。

然而,这些预设只是默认设置。如果需要,可以将相同的安全策略应用于任何其他文件夹。