在 Windows 中,有一个东西叫做服务堆栈它似乎充当了包管理器的角色。我不太明白,只是似乎基于组件的服务 (CBS)、Windows Installer、Windows Update 和 WinSxS 是服务堆栈的一部分,或者以其他方式参与服务。
我进行了大量研究,但未能找到有关 Windows 服务的易于理解的概述。因此,我提出以下问题:
- 什么是服务以及服务堆栈起什么作用?
- 服务堆栈如何工作?CBS、Windows Installer、WinSxS 和 Windows Update 扮演什么角色?
答案1
1. 什么是服务以及服务堆栈起什么作用?
服务是配置 Windows 更新的名称或 Windows 功能(安装、删除更新/功能)。这可以在 Windows 运行时(在线)或针对未运行的 Windows 分区/或已安装的 WIM(离线)执行:
什么是服务?服务是针对 Windows 操作系统安装角色、功能、服务包或 Windows 更新的行为。大多数情况下,服务是在在线状态下进行的。在这种情况下,在线意味着在进行更改时操作系统已启动并正在运行。在线服务是大多数人所做的,通常通过 Windows 更新或双击下载的更新来完成。还有一种离线状态。当然,离线意味着安装是针对未运行的 Windows 版本进行的。许多大型公司和 OEM 对其映像文件所做的就是如此,他们使用 IMAGEX 或 DISM 安装它们,然后针对这些映像安装修补程序或其他更新,以减少映像投入生产时的修补时间。
2. 什么是 CBS
CBS 代表基于组件的服务,是在 Windows Vista 中添加的。在较旧的 Windows 版本中,设置基于.inf
文件来安装功能/更新。
在 Windows Vista 中,新的组件化架构(称为基于组件的服务 (CBS))改变了这些组件的安装方式。CBS 架构比以前操作系统中的安装程序更加强大和安全。用户可以从更完整、更受控制的安装过程中受益,该过程允许添加更新、驱动程序和可选组件,同时缓解由不正确或部分安装引起的不稳定问题。CBS 允许将 IIS 到 Windows Media Player 的组件和功能打包为包含组件全部功能的小模块。换句话说,每个模块都包含完整安装或删除其包含的组件所需的所有文件、注册表设置和方法。
3. WinSxS 扮演什么角色
此文件夹是在 Windows XP 中添加的,目的是能够在系统上并排安装 2 个不同的 DLL 版本 (sxs)。Microsoft 使用此功能在 WinXp 中允许新的主题支持,但仍保留旧系统 dll 以免破坏旧的 Win95 应用程序。它还用于修复 DLL 地狱。在 Win95 中,您会遇到一个问题,即某个工具在版本 4 中需要特殊的 Windows DLL,而下一个工具在版本 4.10 中需要特殊的 Windows DLL。如果您安装了较新的工具,它可能会破坏旧程序,如果您在安装较新的工具之后安装了较旧的工具,则较旧的工具可以运行,但较新的工具会崩溃,因为 DLL 不支持所有必需的功能。
从 Vista 开始,WinSxS 文件夹包含 Windows 使用的所有文件,当您激活某项功能时,这些文件不会被复制到目标位置C:\Program Files
,而是通过硬链接进行链接:
以前的 Windows 版本与 Windows Vista 之间最大的变化之一是从 INF 描述的操作系统转变为组件化。Windows 中的组件是一个或多个二进制文件、一个目录文件和一个 XML 文件,该文件描述了有关如何安装文件的所有内容。从关联的注册表项和服务到文件应具有的安全权限类型。组件被分组为逻辑单元,这些单元用于构建不同的 Windows 版本。
操作系统中的所有组件都位于 WinSxS 文件夹中 - 事实上,我们将此位置称为组件存储。每个组件都有一个唯一的名称,其中包括版本、语言和构建组件的处理器体系结构。WinSxS 文件夹是系统上找到组件的唯一位置,您在系统上看到的文件的所有其他实例都是通过从组件存储硬链接“投影”的。让我重复最后一点 - 操作系统中每个文件的每个版本只有一个实例(或完整数据副本),该实例位于 WinSxS 文件夹中。因此从这个角度来看,WinSxS 文件夹实际上是整个操作系统的整体,在低级操作系统中称为“平面”。这也解释了为什么在运行系统文件检查器 (SFC) 等操作或安装其他功能和角色时不再提示您输入媒体。
4.Windows Installer 起什么作用?
这与 WinSxS 无关,文件夹 C:\Windows\Installer 是 Windows Installer 服务复制数据的文件夹,以便能够修改或删除已安装的程序。
5. Windows 更新起什么作用?
Windows 更新将文件下载到 C:\Windows\SoftwareDistribution\Download,服务堆栈将数据复制到 WinSxS 并尝试创建硬链接,如果失败(当文件仍在使用时),则操作处于挂起状态,并且更新将在下次启动时安装(关机和启动时配置 Windows 更新屏幕)。