 TechNet Magazine November 2006

TechNet Magazine November 2006

Windows Vista: 部署 Windows Vista 需要了解的十大事项

从更加灵活的图像处理到新的启动加载程序，Windows Vista 引入了一些针对台式机部署的更改。让我们来看一看 Windows Vista 的 10 种可以让您的下一次部署变得比以往任何时候都快速、简单的方法。

Michael Niehaus Windows Vista: 利用 Windows Vista 新增的安全功能保护您的 PC

Windows Vista 是按照 Microsoft 安全开发生命周期 (Microsoft Security Development Lifecycle) 准则进行开发，它所提供的安全级别是早期版本的 Windows 所不具备的。让我们来看一看 Windows Vista 所提供的新的、增强的、可帮助您检测和防止安全威胁的功能。

Justin Harrison Windows Vista: 用“用户帐户控制”实现非管理员操作之梦

虽然限制用户权限是一个很好的有助于保护系统的办法，但是使用非管理员帐户可能不够方便，会导致应用程序兼容性之类的问题。Windows Vista 提供了新的功能，使您能够更方便地管理和支持标准用户帐户

Alex Heaton Windows Vista: 采用 Windows Vista 时的企业联网

自 Windows XP 发布以来，网络发生了巨大改变 － 移动用户越来越多，无线网络无处不在，安全威胁日益复杂。让我们来看一看 Windows Vista 中能够让网络更加简单、安全和易于管理的创新功能。

Jason Leznek Windows Vista: 为 Windows PE 2.0 做好准备

随着 Windows Vista 的发布，Windows PE 的一个更为强大的版本也将发布。此概述讨论了 Windows PE 2.0 中的新特性和功能以及这些变更将给您带来哪些影响

Wes Miller Windows Vista: 新 Microsoft 应用程序兼容性工具包介绍

一个功能更加强大的 Windows PE 版本将与 Windows Vista 一同发布。此概述讨论了 Windows PE 2.0 中的新特性和功能以及这些变更将给您带来哪些影响

John Melton Windows Vista: Windows Vista 中新的事件管理工具

Windows Vista 在企业管理方面向前迈了一大步，它提供了新的改进的基础结构和工具，旨在记录和跟踪事件。其结果是，为用户提供了收集信息和快速解决问题的强大的方法。

Val Menn Windows Vista: Windows Vista 中更强大的组策略

组策略的基础架构经过了全面修订，能够提供新管理功能、新的策略设置，可支持多个本地 GPO，还有更多改进。本文将向您呈现 Windows Vista 中组策略的许多改进。

Jeremy Moskowitz 编辑视角: 为 Windows Vista 做好准备

Joshua Trupin 工具箱: 面向 IT 专业人员的新产品

Greg Steen 实用工具特别推荐: Robocopy GUI

Joshua Hoffman SQL 问题与解答: 临时表、64 位处理、镜像及其他内容

Edited By Nancy Michell 您好，脚本专家！: 我们当然适应能力很强

The Microsoft Scripting Guys Windows 的未来: Windows Server“Longhorn”中的目录服务

Byron Hynes 安全观察: 我刚获得一份安全公告。我该怎么做呢？

Christopher Budd Microsoft.com 技术内幕: ASP.NET 的管理与委派

Jeff Toews 现场注意事项: 学会寻求帮助

Edward Dake Windows 机密: 成功解决兼容性问题

Raymond Chen


 Windows Vista: 部署 Windows Vista 需要了解的十大事项
Windows Vista Michael Niehaus

部署 Windows Vista 需要了解的十大事项
概览:
  • 新的企业客户端部署方法
  • Windows 安装程序中的更改
  • 帮助您快速入门的工具
下载这篇文章的代码: NeihausDeployment2006_11.exe (152KB)

您已经部署了 Windows XP，现在希望过渡到 Windows Vista。如果您要将其部署到 10、100 台或 100,000 台计算机中，只了解 Windows XP 中过程的改变方式将使部署更加顺利。
因此，Windows® XP 和 Windows Vista™ 之间存在十大部署差异，在进行系统过渡时，您将会高兴地发现这些差异。

1. Windows Vista 映像更大
在 Windows XP 和 Windows 2000 中，可以创建能够轻松存储在单张 CD 中的映像（不到 700MB）。那些将应用程序、驱动程序和实用工具添加到映像中的组织，一般最终都会得到大小在 1GB 到 3GB 之间的操作系统映像。
而使用 Windows Vista，映像大小可达到 2GB 以上（压缩后）。一旦部署，映像大小通常会达到 5GB 左右，而且无法减少。如果您添加其他的应用程序、驱动程序或文件，映像显然会变得更大。
那么如何部署映像呢？您的网络是否具备了必要的容量？（10MB 网络或非交换网络的网络容量是不够的。）如果您要使用 CD，该需要多少张呢？您需要三到四张。DVD （每张容量达 4.7GB）目前容易创建，因此如果您有 DVD，可以使用 DVD 驱动器进行部署（如果您目前没有使用 DVD 驱动器，可以在购买下一批 PC 时，考虑添置 DVD 驱动器）。
随着 USB 存储钥匙容量的不断增加（可达 4GB 以上）以及价格的不断下降，使用其可轻松简便地部署 Windows Vista。只要计算机的 BIOS 支持，您就可以制作一个可启动的钥匙。
最后（尽管这与映像的大小毫不相关），请注意：不再有 I386 目录。取而代之的是，所有组件，无论是否安装，都驻留在 Windows 目录中（尽管不在标准 SYSTEM32 目录下）。当安装新的组件时，所有必需的文件将从这一位置被读取。

2. 安全性被增强
Windows Vista 的一些安全增强功能将对部署产生影响。例如，当登录用户没有管理员权限时，可以更加容易地配置 Windows Vista 以支持“低权限”用户。当用户没有管理员访问权限时，有些应用程序无法在 Windows XP 系统中使用，因为应用程序假设用户拥有对 C 盘驱动器和注册表所有部分的完全访问权限。借助 Windows Vista，试图向受限制区域写入数据的应用程序将这些写操作透明地重定向到用户配置文件的其他位置。
第二大变化是非管理员也可加载驱动程序。这使用户可以连接新的设备而无须致电服务台 (Help Desk) 寻求帮助。
您将发现的第三个不同之处在于 Internet Explorer® 可以使用特权自动安装 ActiveX® 控件。新的服务可以代替用户进行这些安装（当然，这得取决于 IT 管理员是否允许通过组策略来这样做）。
您目前可能正使用 Windows XP 中的 Power User 权限，但与仅仅赋予完全管理员权限相比，实际上这一权限并未提供多少优势（在限制用户权限方面）。因此，在 Windows Vista 中，Power Users 组已经被删除，当然，如果需要也可以通过使用单独的安全模板将其恢复，该模板可被用于 Windows Vista 的安装。
有时，您会需要管理员权限，但这并不意味着您始终需要使用管理权限来执行操作。因此，Windows Vista 增加了用户访问控制 (UAC)，使多数用户应用程序 — 甚至是针对管理员的应用程序 — 都可以使用有限权限来运行。对于需要额外权限的应用程序，UAC 将提示权限，要么要求权限来进行特权运行，要么要求能够替代登录用户的其他用户凭据。
还有一些针对内置在 Windows Vista 中的防火墙的增强功能。现在，新的防火墙能够控制进出的流量，而且仍然可以通过组策略进行完全配置。
最后，Windows Vista Enterprise 和 Windows Vista Ultimate 中包含了 BitLocker™ 全卷加密功能，能够对整个操作系统卷进行加密。只有在 Windows Vista 中并且只有在提供权限密钥的情况下，才可从计算机的内置受信任的平台模块 (TPM) 1.2 芯片、USB 钥匙读取卷，或通过键盘键入（请注意，仅支持 TPM 1.2 或更高版本）。

3. Windows Vista 被组件化
Windows Vista 中最大的体系结构变化在于：操作系统现在已经被完全组件化。下列方法对部署造成了影响。
对应安装的 Windows Vista 功能进行配置就必需对要支持的组件进行配置。新的工具（如 Windows 系统映像管理器）如图 1 所示，它们为此提供了帮助。
安全更新程序、语言包和服务包都是组件。工具（如 Package Manager，PKGMGR）可被用来将这些组件应用于 Windows Vista。
图 1 Windows 系统映象管理器
图 1 Windows 系统映象管理器
另外，所有服务均可脱机或联机执行。如果 Windows Vista 当前没有运行，您甚至可以将变更应用于 Windows Vista 或 Windows Vista 映像。这对于部署而言是再理想不过的：在首次启动网络之前，操作系统应当打上补丁。
驱动程序也可被看作组件，这样它们就能被轻松地添加和删除 — 即使在脱机状况下也能做到。这意味着您可以将驱动程序添加到现有映射中，甚至在部署过程中及时（当机器首次启动时）添加。这同样适用于大容量存储驱动程序；您不再需要创建一个新的映射来添加新的大容量存储驱动程序。
Windows Vista 具有更多的设置，大多数组件能够提供可配置的选项，因此，更易于设置可以使用组策略进行管理的安装默认设置。对于 Windows Vista 中的新工具的纲要，请参见边栏“您所需要的工具；您应该忘记的工具。”
您所需要的工具；您应该忘记的工具
以下是您部署 Windows Vista 时将使用的工具的纲要，以及一旦部署完 Windows Vista，您可以一劳永逸地使用的工具。

使用以下这些工具：
  • SYSPREP：这是更新版本，针对 Windows Vista 进行了修改。
  • SETUP：一个新的 Windows Vista 安装工具，替代了 WINNT 和 WINNT32。
  • IMAGEX：新的创建 WIM 映像的命令行工具。
  • Windows 系统映像管理器：创建和修改 unattend.xml 文件。
  • PEIMG：自定义 Windows PE 2.0 映像的工具。
  • Windows 部署服务：RIS 的新版本，增加了功能以部署 Windows Vista 和 Windows XP 映射，以及 Windows PE 2.0 启动映像。
  • PNPUTIL：这是一个新的工具，可以向 Windows Vista 驱动程序存储区中添加驱动程序或从 Windows Vista 驱动程序存储区中删除驱动程序。
  • PKGMGR：也是一个新工具，该款 Windows Vista 工具可被用来服务于操作系统。
  • OCSETUP：该工具取代了 SYSOCMGR，可被用于安装 Windows 组件。
  • BCDEDIT：新的 Windows Vista 工具，可被用于编辑引导配置数据。
  • Application Compatibility Toolkit 5.0：该款更新的工具使您可以评估应用程序是否与 Windows Vista 兼容。
  • User State Migration Tool 3.0：是一款捕获并存储用户状态的更新工具，支持 Windows XP 和 Windows Vista，以及各版本的 Office（包括 2007）。
  • BitLocker：包含在 Windows Vista Enterprise 和 Windows Vista Ultimate 版中的全卷驱动器加密功能。

忘记以下这些工具：
  • 远程安装服务 (RIS) 已经被 Windows 部署服务 (WDS) 所取代。但在 Windows Server 2003 中仍然提供兼容性支持；Windows Vista 不可能再包含 RIPREP 和 RISETUP。
  • Setup Manager/Notepad 转而使用 Windows 系统映像管理器编辑无人参与安装配置文件。
  • WINNT.EXE 和 WINNT32.EXE 转而使用 SETUP。
  • SYSOCMGR 被 OCSETUP、PKGMGR 取代。
  • 至于 MS-DOS 引导软盘，彻底忘了它们吧。使用 Windows PE！

4. 文本模式安装一去不复返
这一以往安装 Windows XP 的基本过程自 Windows NT® 最初推出以来从未改变过。这一耗时的过程涉及一个初始文本模式安装步骤，在该步骤中，每个操作系统文件被解压缩并安装，所有注册表项被创建，所有安全措施被采用。现在，对于 Windows Vista 而言，这个文本模式安装阶段已经不复存在。取而代之的是，由一个新的安装程序进行安装，并将 Windows Vista 映像应用到计算机中。
一旦该映像被应用，需要针对该计算机，对映像进行自定义。这个自定义过程替代了 Windows XP 和 Windows 2000 中所谓的最小化安装。但目的都是一样的：操作系统针对要部署到的具体计算机来选择必要的设置和特性。
映像准备过程也更改了。使用 Windows XP 时，您要“Sysprep”一台机器来准备引用操作系统以进行部署。而对于 Windows Vista，您仍需运行 Sysprep.exe（默认方式下，安装到 C:\Windows\System32\Sysprep），该程序将对机器进行“总结”以便复制。
Windows Vista（任何版本）以 DVD 形式提供，作为一种准备部署到任何机器中的已安装、generalized (Sysprepped) 的映像。有些客户可能选择原封不动地部署该映像（可能使用前面介绍的服务功能来修补程序或驱动程序）。

5. Boot.ini 成为历史
的确，在 Windows Vista 或新的 Windows PE 2.0 中不再使用 Boot.ini 文件。取而代之的是一个新的引导加载程序 — bootmgr。该程序从名为 BCD 的特殊文件中读取引导配置数据。一个新的称为 bcdedit.exe 的工具（或单独的 Windows Management Instrumentation 以及 WMI 提供程序）被用来维护 BCD 的内容。Windows PE 2.0 引导映像也可在 BCD 中进行配置，从而可以轻松地引导到 Windows Vista 或 Windows PE，而无须对机器进行任何变更。在恢复或维护时，这一灵活性非常有用。

6. 用 XML 对设置进行配置
使用 Windows XP（以及 Windows PE 的以前版本）时，配置信息被存储在各个文本文件中。这些文本文件已经被一个 XML 文件取代。
用于对 Windows XP 安装进行配置的 Unattend.txt 已经被 unattend.xml 取代。Unattend.xml 还取代了以下三种其他文件：
  • Sysprep.inf，当采用最小化安装方式将 Windows XP 部署到机器中时，该文件被用于配置对 Windows XP 映像的自定义。
  • Wimbom.ini，该文件被用于配置 Windows PE。
  • Cmdlines.txt，该文件被用于指定在最小化安装过程中要执行的命令的列表。
可从 TechNet Magazine（microsoft.com/technet/technetmag/code06.aspx）下载 unattend.xml 的一个示例。
如果需要，您仍然可以使用单独的文件。您无需将所有配置项放到一个单独的 unattend.xml 文件中。新的 XML 配置文件的高级架构被准确定义，部署过程的每一阶段都得以体现。在适当的操作系统组件中实际的配置项被指定，这些项可以组件中被动态地发现。
在 Windows XP 中，多数 IT 专业人员使用 Notepad 编辑各种配置文件。您依然可以这样做，但我们前面讨论的 Windows 系统映像管理器可被用来检查 Windows Vista 映像、确定哪些设置可用，并允许您逐一配置。
另一个部署辅助工具是 User State Migration Tool (USMT) 3.0，该工具预计将与 Windows Vista 同时发布。该工具也将使用 XML 配置文件以替代以前版本中使用的 .inf 文件。要了解更详细的信息，请参阅“通过 User State Migration Tool，迁移到 Windows Vista”。

7. HAL 不再复杂
在 Windows XP 中，技术的限制阻碍了创建可以被部署到所有计算机中的单一映像。不同的硬件抽象层 (HAL) 意味着您不得不维护多个映像。（关于这一问题的更多信息，请参阅知识库文章“Windows XP 或 Windows Server 2003 安装后的 HAL 选项”）多数组织针对每个平台（x86 和 x64）需要两到三个映像，有些甚至需要更多 — 尽管每个映像带来了成本和复杂度的增加。
在 Windows Vista 中，这些技术制约不复存在，操作系统能够监测需要哪个 HAL 并自动安装它。

8. Windows PE 规则
Windows PE 2.0（其新版本将随着 Windows Vista 一同发布）是部署过程的一个重要部分。甚至标准的、基于 DVD 的 Windows Vista 安装程序也使用 Windows PE 2.0，并且多数组织将其作为它们部署过程的一部分来使用（通常根据组织的具体需求来自定义）。
与基于 MS-DOS® 的部署相比，Windows PE 2.0 具有诸多优势，包括尝试发现 16 位实模式驱动程序所花的时间更少。（对于一些更新的网卡和大容量存储适配器，甚至不可能再找到这些驱动程序。）32 位和 64 位网络堆栈和工具带来更出色的性能，大容量内存支持同样是优势所在。不要忘了，它还支持 Windows Scripting Host、VBScript 等工具以及超文本应用程序。
Windows PE 已经面世多年（其最新版本 — Windows PE 2005 与 Windows XP SP2 和 Windows Server 2003 SP1 同时发布），但并非所有组织都能使用它，它需要您有针对 Windows 桌面操作系统许可证的软件保障。 而使用 Windows PE 2.0，情况则截然不同。所有组织都能够从 microsoft.com 下载 Windows PE 2.0，并免费使用以部署获得许可的 Windows Vista。
如同 Windows Vista 一样，Windows PE 2.0 也作为一个组件化的、可被联机和脱机使用的映像来提供。尽管 Windows PE 2.0 包含了下列一些新的组件，仍可以像使用 Windows PE 2005 一样，添加若干可选组件：MSXML 3.0、Windows 恢复环境、语言包、字体包等等。提供了新的工具（如 peimg.exe）以便使用 Windows PE 2.0。Peimg.exe 还可被用于添加驱动程序 — 包括大容量存储设备，这些设备不再需要任何特殊处理。
要了解关于 Windows PE 2.0 的更详细的信息，请参阅本期 TechNet Magazine 中 Wes Miller 的文章。

9. 映像综述
使用 Windows XP 时，有些公司会用到 Systems Management Server (SMS) 2003 OS Deployment Feature Pack 的映像创建功能或第三方映像创建工具。以往，Microsoft 没有提供通用映像创建工具。随着 Windows Vista 的推出，情况发生了变化：已经创建了新的工具来支持 Windows 映像 (WIM) 文件格式。与许多其他映像格式不同，WIM 映像是基于文件的，从而使它们可以被无损地应用于一个现有分区。这在部署过程中优势明显，因为用户状态可以被保存在本地而非网络服务器中，从而消除了部署过程中常常是网络流量最大来源的那部分内容。
因为 WIM 文件是基于文件的映像，它们（很显然）不是基于扇区的，因此，不存在由不同大小磁盘或分区所引发的问题。WIM 映像只包含单一磁盘卷或分区的内容，因此，如果您有多个分区要捕获，您要为每个分区创建一个单独的映像。但是这些映像中的每一个都可以存储在同一个 WIM 文件中，因为 WIM 文件格式支持每个文件有多个映像。
WIM 文件格式还支持单一实例存储，因此，重复的文件（甚至来自不同的映像）被自动删除。这一方法和所采用的先进压缩技术相比，WIM 映像通常比其他工具创建的映像更小。然而，由于而外处理，它们需要花更长的时间来创建。大小与性能的权衡是相当公平的，因为您通常仅仅捕获一次映像，然后多次部署，网络流量的节省是非常显著的。
IMAGEX 命令行工具可以与低级 WIMGAPI API（其被完全文档化以便在自定义工具中也可使用）接合，并可被用于创建和操作 WIM 映像。它还提供了将 WIM 映像加载为一个文件系统的机制。一旦加载，映像可以使用标准 Windows 工具来读取和修改，因为它看起来就如同一个可移动的媒体驱动器。这一便利性带来了新的使用机会。

10. 部署是语言无关的
Windows XP 以两种方式支持不同的语言。您既可以部署 Windows XP 本地版本（这需要针对每种语言都有不同的映像），也可以部署带有附加语言包的 English Multilanguage User Interface (MUI) 版本。每种方法都各有利弊，但多数情况下，需要支持多种语言的组织会采用 MUI 这种方法，以应对运行以英语为核心的操作系统所带来的局限性。仅使用一种语言工作的组织一般只选择使用本地化的版本。
现在，使用 Windows Vista，整个操作系统是语言无关的。一种或一种以上的语言包被添加到这一语言无关的核心系统以创建部署的映像（尽管只有某些 Windows Vista 版本支持多种语言）。
Windows Vista 的使用也是语言无关的，因此，多数情况下针对所有语言只需一个安全更新程序。而且配置也是语言无关的，因此，针对所有语言只需一个 unattend.xml。

帮助无处不在
我所介绍的这些变更旨在说明您一直使用的 Windows XP 映像创建和部署过程需要被更新。某些情况下，这些更新可能微不足道，而另一些情况下（如使用 cmdlines.txt 的基于 MS-DOS 的过程），可能需要大规模更新。为了提供帮助，Microsoft 已经创建了新的工具、指导和分步方法。这些内容包含在 Solution Accelerator for Business Desktop Deployment (BDD) 2007 中。
BDD 2007 将部署过程分解为更多可管理的小部分，由不同的小组管理各个组件。为各小组提供指导、检查表和工具以便为他们需要执行的任务提供帮助（参见图 2）。
图 2 BDD 2007 将部署过程分解为更多可管理的任务
图 2 BDD 2007 将部署过程分解为更多可管理的任务
目前，您可以通过注册从 connect.microsoft.com 下载 BDD 2007 以使用测试程序。下载的内容包括所有所需的 Windows Vista 部署工具，如 Windows PE 2.0、ImageX、Windows 系统映像管理器和 USMT 3.0，以及解释在端到端过程中如何使用这些工具的文档。BDD 2007 的最新版本将与 Windows Vista 同时发布。要了解 BDDWorkbench，请看一下图 3。
图 3 BDDWorkbench 帮助您管理多个部署方案
图 3 BDDWorkbench 帮助您管理多个部署方案
BDD 2007 的目的就是简化。如果您没有现成的映像创建和部署过程，您可以使用 BDD 快速来设置。提供了如下两种方法：
  • Lite Touch，该方法被完全重新编写，需要用户交互来开始部署。它无需任何特殊的基础结构，尽管它可以利用 Windows 部署服务（远程安装服务的下一个版本）。
  • Zero Touch，该方法无需用户交互，被放置在 SMS 2003 OS Deployment Feature Pack 的顶层。
BDD 2007 中的新功能包括驱动程序库和驱动程序器注册、完全计算机备份处理、所有 Windows Vista 部署工具的集成等。BDD 2007 将包含所有其自动工具的源代码，这样，您就可以修改原代码来满足您的具体需求或将代码复制并粘贴到您自己的解决方案中。源代码提供没有限制。
要了解关于 BDD 2007 的更详细的信息，请参阅 TechNet 桌面部署中心（英文）。

Michael Niehaus Michael Niehaus 是 Microsoft 核心基础结构解决方案小组的系统设计工程师。 他负责开发最佳实践方法、工具和商用台式机部署脚本。可以通过电子邮件（地址： michael.niehaus@microsoft.com）与他联系。
© 2007 Microsoft Corporation 与 CMP Media, LLC.保留所有权利；不得对全文或部分内容进行复制.


 Windows Vista: 利用 Windows Vista 新增的安全功能保护您的 PC
Windows Vista Justin Harrison

利用 Windows Vista 新增的安全功能保护您的 PC
概览:
  • 使用 Windows 安全中心
  • 配置和管理用户帐户控制设置
  • 利用 Windows Defender 扫描间谍软件

几年前，Microsoft 公司主席（兼首席软件架构师）比尔盖茨就要求员工将可靠计算作为公司的最高优先级。随着这一要求的提出，Microsoft 开发软件的方式发生了一系列变化。
Windows Vista™ 是完全按照安全开发生命周期 (Security Development Lifecycle, SDL) 准则开发的操作系统。SDL 是一个以安全为中心的工程流程，它将安全视为软件设计的根本本质；广泛部署的所有 Microsoft 产品都必须遵循这些准则。（有关 SDL 的详细信息，请参阅 Michael Howard 与 Steve Lipner 合著的 The Security Development Lifecycle 一书，Microsoft Press®，2006）。
Windows Vista 还包括新的或已升级的内置安全技术，可对安全威胁进行主动检测和防止。所有这些变化表明 Windows Vista 是迄今为止最为安全的 Windows® 版本。在本文中，我将讨论新增的安全控制面板小程序、Windows 安全中心以及内置的保护功能（包括 Windows Defender、Windows 防火墙和用户帐户控制）。

安全控制面板 (The Security Control Panel)
当您在 Windows Vista 中打开控制面板时，您会注意到它包含十个功能区，大部分与安全相关的小程序分布于“安全”、“程序”以及“网络和 Internet”中。您可以使用“安全”小程序访问 Windows Vista 中为您提供安全保护的大部分新的安全技术，如图 1 所示。
Figure 1 Windows Vista 采用的安全技术 (Close Figure 1)

功能 | 说明
安全中心 | 检查更新；检查安全状态；启用自动更新；检查防火墙状态；唤醒时要求密码。
Windows 防火墙 | 启用或关闭 Windows 防火墙；允许某个程序通过 Windows 防火墙。
Windows Update | 启用自动更新；检查更新；查看已安装的更新。
Windows Defender | 扫描间谍软件和其他潜在的恶意软件。
Internet 选项 | 更改安全设置；删除 Cookie；清除历史记录。
家长控制 | 为任何用户设置家长控制；查看活动报告。
BitLocker Drive Encryption | 启用 BitLocker Drive Encryption。
您还可以检查 Windows Updates 是否有更新，启用 BitLocker™ Drive Encryption，删除 Cookie，清除历史记录，以及为您的计算机设置一个密码以便在它唤醒时发送一个输入密码的提示。
此外，“安全”小程序还使得访问安全中心变得更为简单，您可以通过一体化的安全中心来管理和检查您的计算机的安全设置以及内置保护功能的状态。

集中式安全管理
在 Windows XP Service Pack 2 (SP2) 推出安全中心之前，处理所有 Windows 安全设置是件困难的事情。现在，有了安全中心，您在一处即可管理重要的 Windows 安全设置，而且这一功能在 Windows Vista 中更得到了增强。
Windows 安全中心在后台运行，它对四类安全功能进行主动监视，如图 2 所示：防火墙、自动更新、恶意软件（病毒和间谍软件）防护以及其他安全设置（Internet 设置和用户帐户控制设置）。
图 2 在一处管理安全设置
图 2 在一处管理安全设置
通过 Windows 安全中心，您可以查看是哪个应用程序充当着您的计算机防火墙，或是作为反间谍软件和防病毒解决方案。您还可以检查防火墙、自动更新和用户帐户控制设置的状态。Windows 安全中心的另一独到之处是除了可以监视内置的 Windows 技术外，它还可以监视第三方应用程序的状态。它可以检查以下内容：
  • 是否安装了防火墙，防火墙是否已启用。
  • 是否安装了防病毒程序，病毒定义文件是否为最新的，实时扫描是否已启用。
  • 是否安装了反间谍软件，间谍软件定义文件是否是最新的，实时扫描是否已启用。
Windows 安全中心使用两种方法来检测第三方防病毒和防火墙应用程序。在手动模式下，Windows 安全中心可搜索注册表项和文件，以便检测软件的状态。它还可以查询供参与供应商使用的 Windows Management Instrumentation (WMI) 提供程序，以获取应用程序功能的状态。这意味着您可以将非 Microsoft 解决方案用作防病毒、反间谍软件或防火墙的解决方案，而同时使用 Windows 安全中心来监视和保护您的计算机。
Windows 安全中心可通过组策略进行控制。默认情况下，在域环境中它是被禁用的。要启用 Windows 安全中心，请访问“计算机配置\管理模版\Windows 组件\安全中心”节点。要启用的策略的名称为“启用安全中心(仅域 PC)”。
此外，Windows 安全中心还可监视用户帐户控制设置和 Internet 安全设置的状态。用户帐户控制允许您以标准用户来使用计算机，而不是管理员用户，这样会更安全。作为标准用户，您所进行的任何更改都不会影响到整个系统，并且您安装的任何软件的破坏范围也都有限。
在 Windows Vista 中，如果您以不属于域的计算机的标准用户身份运行计算机，并且软件要执行的操作会影响整个系统，则操作系统会提示您输入管理员密码。如果以管理员身份运行计算机，Windows Vista 会提示输入执行系统级操作的权限，以便在操作发生前您可以认识到这一操作（和同意该操作）。
在域环境中，用户帐户控制由组策略进行管理。如果您的计算机不在域中，则由本地安全策略进行处理。策略设置位于“本地安全策略”编辑器或“组策略”编辑器的 Computer Configuration\System Settings\Local Policies\Security Options 中。您可以在“控制面板”中“系统和维护”|“管理工具”下找到“本地安全策略”编辑器。
如图 3 所示，Windows 安全中心可监视许多 Internet 安全选项。
Figure 3 Internet 安全设置 (Close Figure 3)

Windows 安全中心监视以下 Internet 设置：
下载已签名的 ActiveX 控件
下载未签名的 ActiveX 控件
初始化脚本和未标记为脚本安全的 ActiveX 控件
安装桌面项目
加载应用程序和不安全文件
在 IFRAME 中加载程序和文件
软件频道权限
如果将某个选项更改为不安全的状态，则“Internet 属性”对话框会指出“您的安全设置会使您的计算机处于危险之中”，并且 Microsoft Internet Explorer® 将显示一个信息栏指出“当前安全设置会使您的计算机处于危险之中。单击此处以更改您的安全设置...”。Windows 安全中心还会提醒您“没有使用建议的安全设置”。如果您打开“Internet 安全设置”，不安全的设置将会以红色突出显示（参见图 4）。
图 4 突出显示不安全设置
图 4 突出显示不安全设置
Windows 安全中心可以将不安全的安全设置还原到安全状态。您只需单击“还原我的 Internet”(Restore my Internet) 安全设置即可还原，如图 5 所示。
图 5 消除危险设置
图 5 消除危险设置

Windows Defender
Rootkit、木马、间谍软件和其他恶意软件都是很严重的安全问题。它们会使您的信息面临风险，降低计算机的性能，甚至造成系统崩溃。Microsoft 在 2004 年收购了 Giant Software 公司，并推出反间谍软件技术以保护客户。Windows Vista 中内置的 Windows Defender 即为这项新技术的具体应用（您也可以为所使用的 Windows XP 下载 Windows Defender）。
在安装了 Windows Vista 后，无需立即更改 Windows Defender 的任何设置。因为 Windows Defender 已默认配置为以最低限度的人为干预即可提供最大程度的安全，因此，您可以专注于使用自己的计算机，而不用考虑如何设置保护计算机。Windows Defender 一旦启动即可提供实时保护，每晚 2 点左右它会自动检查并下载更新的间谍软件定义，并自动清除具有高度威胁性的所有风险。您也可以调整设置，方法是：在 Windows Defender 中，选择“工具”|“常规设置”。
实时保护意味着 Windows Defender 会始终注意监视您的计算机上的可疑行为。它使用 9 个安全代理（如图 6 中所列）来监视系统的各个部分，以便发现具有间谍软件特征的应用程序行为。Windows Defender 各安全代理共同作用以监视间谍软件的几乎所有常见入口点。
Figure 6 Windows Defender 安全代理 (Close Figure 6)

代理 | 监视
Internet Explorer 配置 | 浏览器安全设置。
Internet Explorer 下载 | 与 Internet Explorer 一起使用的应用程序，例如 ActiveX 控件和软件安装应用程序。
Internet Explorer 加载项（浏览器帮助对象） | 在启动 Internet Explorer 时自动运行的应用程序。
自动启动 | Windows 启动时将启动的应用程序，包括通过注册表和 Windows 启动文件夹启动的应用程序。
系统配置 | Windows 中与安全相关的设置。
服务和驱动程序 | 与 Windows 和应用程序进行交互的服务和驱动程序。
Windows 加载项 | 集成在 Windows 中的软件实用程序。
应用程序执行 | 启动时的应用程序及其执行情况。
应用程序注册 (API hook) | 操作系统中的文件和工具，应用程序可借其插入自身以运行。

威胁响应
当 Windows Defender 发现潜在的恶意软件或检测到可疑行为时会向您发出警告。当出现无关紧要（威胁程度低）的更改时，Windows Defender 会在系统任务栏中显示惊叹号图标来提醒您。对于更为严重的威胁（中度威胁或高度威胁），Windows Defender 会根据威胁的程度显示一个黄色或红色对话框，如图 7 所示。对于这类威胁需要立即做出响应。
图 7 红色窗口表示具有高度威胁
图 7 红色窗口表示具有高度威胁
Windows Defender 执行的所有操作在带有“Windows Defender”源的系统事件日志中都有日志记录。日志记录中的操作包括定义的更新以及对间谍软件的扫描和删除操作。
Windows Defender 的威胁警告非常智能，您可以通过它们继续响应操作。威胁警告对话框中可列出多个威胁，您可以选择响应所有威胁（“全部删除”）。此外，您还可以配置威胁警告，以便根据未分类威胁和允许运行的已知软件做出不同的响应。要配置威胁警告，请打开 Windows Defender，依次单击“工具”|“选项”。向下滚动到“实时保护选项”，然后选择是否让 Windows Defender 通知您尚未分类为一定风险的软件，以及有关允许运行的软件对您的计算机所进行的更改。
请注意，如果 Windows Defender 对您创建的应用程序或您使用的应用程序没有进行正确的分类，您可以在 microsoft.com/athome/security/spyware/software/isv/cdform.aspx 中将供应商的争议进行归档。如果应用程序被误认为间谍软件，您可以通过 microsoft.com/athome/security/spyware/software/isv/fpform.aspx 报告这一误报。

按需保护
Windows Defender 非常注意监视潜在的恶意软件，但是，您也可以在必要时启动间谍软件扫描功能。Windows Defender 提供了三种类型的扫描：
  • “快速扫描”(Quick Scan) 快速检查计算机上最可能被间谍软件感染的位置。
  • “完全扫描”(Full Scan) 扫描硬盘中的所有文件、运行的应用程序、注册表和其他位置。
  • “自定义扫描”(Custom Scan) 允许您扫描特定文件或文件夹；它启动后会自动运行 Quick Scan。
要启动一个扫描，请先启动 Windows Defender，单击“扫描”按钮旁边的向下箭头；然后选择要启动的扫描类型，如图 8 所示。
图 8 选择扫描类型
图 8 选择扫描类型
当 Windows Defender 在扫描中检测到威胁时，它会显示对该威胁的描述以及您可以采取的解决办法。默认情况下，它将显示可采取的最佳措施。如果发现多个威胁，您可以选择相应的响应，然后通过单击“应用操作”(Apply Actions) 一次应用全部响应，或通过单击“全部删除”删除全部威胁。您可以选择的操作如下：
  • 删除—从您的系统中彻底删除威胁。
  • 忽略—忽略威胁。下次进行扫描时，Windows Defender 将会再次检测到该威胁。
  • 隔离—暂时禁用威胁。您可以使用该选项来测试如果删除该威胁是否会给您的系统带来不利影响。您可以随时从 Windows Defender 内部对其进行还原。
  • 始终允许—停止检测威胁，并将其添加到许用的项目列表中。您也可以从许用的项目列表中删除项目，方法是：在 Windows Defender 中，依次单击“工具”|“选项”。

网络入侵预防
Windows Vista 中的 Windows 防火墙是双向的状态防火墙，包含自 Windows XP 版本以来的许多先进技术。在 Windows Vista 中，Windows 防火墙将过滤传入和传出的流量。此外，还可针对以下项目配置规则：
  • Active Directory 帐户和组
  • IP 协议数量
  • 接口的特定类型
  • 服务
  • 按类型和代码的 ICMP 和 ICMPv6
  • 来源和目标的 IP 地址
  • 所有 TCP 或 UDP 端口，或特定端口
在 Windows Vista 中，您还可以允许特定程序访问网络，或通过“例外列表”拒绝流量。要访问“例外列表”，请依次单击“开始”|“控制面板”|“安全”，然后单击“允许应用程序通过 Windows 防火墙”。
默认情况下，Windows 防火墙将拦截所有传入流量（除非它是被请求的或是符合某个规则），并允许所有传出流量通过防火墙（除非它符合某个规则）。
Windows Vista 附带了一个新的称作“Windows 防火墙和高级安全设置”的 Microsoft 管理控制台 (MMC) 管理单元（参见图 9），管理员可使用它在远程计算机上配置 Windows 防火墙设置。要访问这一新的管理单元，请依次单击“系统和维护”以及“控制面板”中的“管理工具”，然后单击“采用高级安全设置的 Windows 防火墙”(Windows Firewall with Advanced Security)。
图 9 创建保护您的计算机抵御网络威胁的高级规则
图 9 创建保护您的计算机抵御网络威胁的高级规则
要添加规则，您可以使用“组策略”编辑器管理单元访问以下部分：Computer Configuration\Windows Settings\Security Settings\Windows Firewall with Advanced Security。您甚至可以从命令行使用 netsh advfirewall 命令配置新的“高级安全设置”。
每当您连接到新网络时，Windows Vista 都会针对该网络创建一个配置文件。当以后再次连接到该网络时，Windows Vista 就会使用该配置文件中已保存的设置。当您连接到新的网络时，操作系统会首先询问该网络是公共网络还是专用网络。这将确定 Windows 防火墙加载哪个配置文件以用于配置设置和规则。如果要编辑配置文件，请在“采用高级安全设置的 Windows 防火墙”管理单元中单击“Windows 防火墙属性”(Windows Firewall Properties)，然后单击“专用配置文件”或“公共配置文件”选项卡，如图 10 所示。
根据需要，您还可以在连接到网络后从“网络和共享中心”(Network and Sharing Center) 更改与网络相关的配置文件。要进行此操作，请转到“控制面板”|“网络和 Internet”|“网络和共享中心”。要更改网络配置文件，请单击您连接到的网络名称旁边的“自定义”按钮。
图 10 基于网络类型进行自定义保护
图 10 基于网络类型进行自定义保护

总结
自从几年前提出了可靠计算设计原则以来，Windows Vista 是第一款全面的操作系统版本。Windows Vista 在安全开发生命周期准则的思想指导下进行开发，并内置了多种安全保护功能，例如 Windows Defender、Windows 防火墙和用户帐户控制，它所具有的无与伦比的保护功能，不仅为独立系统，同时也为域环境中的计算机提供了安全保护。Windows 安全中心、Windows 防火墙和用户帐户控制都提供了组策略配置，使您可以在域环境中对它们进行更有效地部署，同时还可以在个人计算机上对它们进行非常广泛的本地配置。
SpyNet 社区
安全威胁不断变化，有时，甚至每日更新都不足以抵御您的计算机可能会遇到的各种安全威胁。较之提供间谍软件定义更新，Microsoft 还提供了其他安全防范措施，它利用 SpyNet 社区这样一个在线小组，为用户提供有关间谍软件的共享信息。
Spynet 社区是一个自愿的全球性 Windows Defender 用户社区，它向 Microsoft 报告有关间谍软件的发现信息。参与该社区的用户在确定哪些应用程序最终会被分类为间谍软件方面起着重要作用，他们还帮助尽快发现新的威胁，以便所有 Windows Defender 用户都可得到更好的保护。
加入 SpyNet 社区是选择性的。您必须明确决定您是否加入。您可以选择不成为其成员，在这种情况下，有关您可能感染的间谍软件的信息是不会发送给 SpyNet。如果在您的计算机上发现了未分类的潜在的恶意软件，您将不会得到通知。未分类的潜在的恶意软件可能最终会在日常间谍软件定义更新中进行分类。
如果选择加入该社区，可供选择的成员级别有两种：
高级成员。 参加者将有关未分类软件和所采取的操作的信息发送给 Microsoft。对于当前未分类的可能不安全的软件，高级成员可得到警告。一些个人信息也可能被同时发送，但是 Microsoft 是不会使用它来与您联系。
高级成员将收到清除统计信息，其中会说明其他高级成员是如何响应同一威胁的。该信息有助于您确定当前未分类的潜在恶意软件是否具有威胁。例如，如果一个新的应用程序通过 Internet 进行分发，Windows Defender 检测到它比较可疑，那么一些高级用户可能向 SpyNet 报告并加以删除。SpyNet 将会通知您有多少高级成员对此进行了报告并加以删除，这样，您就可以利用此信息来更好地决定自己要采取的操作。
基本成员。 这类成员将有关可疑软件的基本信息发送给 Microsoft。个人信息也可能会同时发送，但 Microsoft 是不会用它来与您联系。基本成员不会得到有关未分类软件的警告。
要加入 Spynet 社区，请打开 Windows Defender，选择“工具”，然后单击“Microsoft SpyNet”。

Justin HarrisonJustin Harrison (justin@harrison.org) 是 Windows 安全、数字媒体技术和数字文档方面的专家。他曾经任职于 GE Energy 和 Microsoft 的数字文档团队和游戏娱乐团队。


 Windows Vista: 用“用户帐户控制”实现非管理员操作之梦
Windows Vista Alex Heaton

用“用户帐户控制”实现非管理员操作之梦
概览:
  • 为什么要禁止以管理员身份运行
  • 尝试以标准用户身份运行来解决问题
  • “用户帐户控制”的工作原理

在大多数 IT 组织内，让较少的用户具有管理员权限是一个值得实现的目标。尽管 IT 管理员普遍认为将用户限制为标准用户帐户是可行之策，但是大约 80 % 的人还是将桌面机部署为管理员帐户，结果导致
这些计算机更容易受到恶意软件侵袭，也更难于管理。但避免使用管理员帐户不是那么简单。如果您尝试一下，您就会发现有许多潜在的障碍。
首先是应用程序兼容性。由于许多应用程序是使用管理员帐户编写和测试的，所以在标准用户帐户下它们甚至无法运行（由于应用程序要尝试写入受限区域，如 Program Files 目录或 HKLM 注册表项，所以这是最常见的情况）。
其次，较早版本的 Windows® 对允许用户配置的设置做了过度限制。如果不请求支持中心，标准用户可能无法进行更改时区、电源设置、连接到安全的无线网络或安装 ActiveX® 控件等操作，这都会带来相关的成本。
幸运的是，Windows Vista™ 解决了这些问题。即使您的用户没有管理员帐户，Windows Vista 中的“用户帐户控制”(UAC) 和其他管理技术也使得用户可以更方便地支持和管理那些桌面机、提高标准用户的工作效率，并且实现这一切都不需要降低安全性，而在您采用修改访问控制列表 (ACL) 这一为用户提供可定制的更多访问权限的常用方法时则可能降低安全性。下面让我们仔细看看 Windows Vista 是如何缓解您的一些访问控制问题的。

虚拟化改善了兼容性
由于使用了文件和注册表虚拟化功能，所以许多在 Windows XP 上无法以标准用户身份运行的应用程序，不用经过修改即可在 Windows Vista 上运行。在 Windows XP 中，当许多应用程序试图往标准用户没有访问权限的文件系统和注册表的保护区域写入数据时，程序就会崩溃。Windows Vista 通过将写入操作（以及随后的文件或注册表读取）重定向到该用户配置文件中的一个特殊位置来改善兼容性。例如，如果一个应用程序试图向 C:\program files\contoso\settings.ini 进行写入操作，但该用户没有写入该目录的权限，那么写入操作将会被重定向到 C:\Users\用户名\AppData\Local\VirtualStore\Program Files\contoso\settings.ini。如果一个应用程序试图写入 HKLM\Software\Contoso\，该操作将会被自动重定向到 HKCU\Software\Classes\VirtualStore\MACHINE\Software\Contoso。图 1 概括了重定向过程。此外，Windows Vista 软件徽标认证计划还要求一个应用程序无需虚拟化就可以按标准用户身份运行；如果达不到，则不能将该徽标授予该应用程序。
图 1 文件和注册表虚拟化过程
图 1 文件和注册表虚拟化过程

标准用户可执行更多操作
在 Windows Vista 中，赋予了标准用户帐户更多权限，所以标准用户可以在没有支持中心支持、也没有管理员帐户提供的全部权限的情况下执行常规任务。新的权限包括可以查看系统时钟和日历、更改时区、修改无线网络安全设置、更改电源管理设置以及从 Windows Update 下载并安装关键更新。
另外，在 Windows Vista 中，磁盘碎片整理是一个由系统自动计划的操作。需要管理员权限的操作标有一个盾牌图标，所以用户可以一目了然地知道他们可以更改哪些配置，无法更改哪些配置。

ActiveX 控件安装
对 ActiveX 控件进行集中管理可能尤为棘手，因为它们更新频繁，而且需要重新打包后才能通过系统管理服务器 (SMS) 等软件分发程序或组策略进行分发。Windows Vista 中含有一个叫做 ActiveX Installer 服务的可选组件，它允许 IT 管理员使用组策略指定标准用户可从其安装 ActiveX 控件的网站。要使用 ActiveX Installer 服务，请执行以下操作：
  1. 在客户端计算机上启用 ActiveX Installer 服务。您可以通过 Windows 功能控制面板小程序或在配置桌面映像时启用该服务。
  2. 在 Active Directory Group Policy 组策略中，依次打开“计算机配置”|“管理模板”|“Windows 组件”，然后选择 ActiveX Installer 服务。再选择“启用”。现在，等策略复制给这些用户后，他们就能够从您指定的站点安装控件了。
由于 ActiveX 控件和其他可执行代码可以执行恶意操作，所以请审慎使用该功能；请只对您信任的供应商使用该功能并在严格控制下的企业内部站点上使用。
ActiveX Control Installer 服务还与 Windows Vista 事件基础结构集成，所以如果有您的用户需要安装的 ActiveX 控件，您会自动收到通知。当标准用户试图安装没有经过批准的控件时，该服务会在应用程序日志中创建一个事件。在 Windows Vista 中，可以将各种任务配置为一旦触发一个事件，就自动发送一份电子邮件或执行另一个程序。以后当用户需要控件时您就会得知，您可以将该站点添加到组策略而不必让用户停下工作安装控件。如果使用 Windows Vista，您还可以订阅企业中多台计算机的事件，并生成一个您的用户试图安装的所有控件的列表。

硬件设备驱动程序安装
用户在旅行中无法安装需要的设备驱动程序这些问题是依然普遍使用管理员权限的另一个原因，特别是对于便携式计算机用户而言。Windows Vista 中新增的驱动程序库基础结构通过灵活控制标准用户可以安装的设备缓解了这个难题。首先，您可以用可信赖的驱动程序预先填充驱动程序库，以便用户在需要时可以安装允许的设备。其次，您可以使用组策略来为标准用户指定安装各类设备的权限，比如打印机，甚至指定具体的硬件 ID，如允许使用的闪存驱动器。
由于 Windows Vista 驱动程序库是一个位于每台客端计算机硬盘上的系统自带和第三方驱动程序的可信赖缓存区，所以用户不需要管理员权限就可以安装驱动程序。要对驱动程序库中的驱动程序进行分级，您可以将它们注入脱机映像或通过网络将驱动程序动态更新到在线客户端计算机。对于脱机映像，请使用打包管理器对驱动程序库中的驱动程序进行无缝分级。
而对于在线映像，请使用 pnputil.exe 或 DevCon 之类的命令行实用工具配合软件分发应用程序来添加、更新或删除驱动程序库中的驱动程序。为了进一步提高效率并灵活进行驱动程序分级，Windows Vista 赋予了 IT 部门和第三方签署驱动程序软件包完整性的能力。
默认情况下，只有具有管理员权限的用户才能将新的驱动程序添加到驱动程序库中。但是对于某些用户，特别是移动用户而言，有一个至关重要的要求就是在旅行中安装打印机之类的设备。借助新的组策略设置，Windows Vista 使您能够为标准用户指定所需的灵活性来安装允许的设备，即使尚未在驱动程序库中对驱动程序分级也可进行安装。要指派设备驱动程序分级权限，请打开组策略界面，依次定位到“计算机配置”| “管理模板”| “系统”| “驱动程序安装”|“允许非管理员为这些设备安装驱动程序”。您需要知道希望标准用户分级和安装的设备类的 GUID。您可以在 MSDN ® 上在线查找设备类，如果已将设备安装到计算机上，请转到“设备管理器”|“属性”窗口。单击“详细信息”选项卡，然后选择标有“设备类 GUID”的下拉列表。您还需要确保用于签署驱动程序的证书已经存放在客户端计算机的“受信任的发布者”库中，通过组策略可以管理这个库。
Windows Vista 中的这些先进功能现在可为标准用户提供所需的安装设备的灵活性，所以您可以将更多的用户转移到受管理的桌面环境中。

桌面锁定的级别
即使 Windows Vista 操作系统中有了以上改进，但并非所有组织都能够使用标准用户权限部署其所有 Windows Vista 桌面机。有些组织可能还有仍然需要管理员权限的应用程序，或者它们拥有需要安装自己软件的用户（如开发人员）。没问题。Windows Vista 支持多个级别的桌面控制，可通过选择用户帐户和组策略进行配置，所有级别都提供了比 Windows XP 上的完全管理员权限的帐户更强大的管理功能和安全性。大多数与 UAC 设置有关的系统设置都可以在安全策略编辑器 (secpol.msc) 中找到，如图 2 所示。
图 2 安全策略编辑器
图 2 安全策略编辑器
第一个控制级别称为 Admin Approval Mode（管理员批准模式）。该模式降低了某些类型的恶意软件攻击的威胁，所用的方法是默认为用标准用户权限启动程序，并在有程序试图用管理员权限运行时向用户发出警告。在这种模式下，当用户运行需要管理员权限的程序时，您可以依据事件日志进行审核。但请记住，尽管某个应用程序可以使用标准用户权限运行，但该模式并不能提供与真正的标准用户帐户同样的安全性。用户仍然具有管理员权限并可以更改策略设置，安装未经批准的软件并允许安装 Rootkit 之类功能强大的恶意软件。
下一个级别以第一个级别为基础，但使用组策略来限制对用 Trusted Publishers（可信发行人）库中的证书签署的程序的升级。这样有助于防止未经签名的恶意软件获得管理员权限，并能防止用户安装能够完全控制计算机的软件。然而，当使用管理员帐户运行时，技术高超却很不谨慎的用户或者高度复杂的恶意软件可能会通过禁用（至少临时禁用）该策略来执行未经许可的操作。因此，当解决阻止您使用真正的标准用户帐户的任何问题时，应将上面的这两个级别作为临时措施。
下一个安全级别所涉及的内容是从管理员帐户组中删除用户并将其设置为标准用户。UAC 的一个功能称为 Over the Shoulder Credentials Dialog，默认情况下，当标准用户启动需要管理员凭证的程序时，系统会显示这个对话框。系统会阻止标准用户执行操作，但如果他们知道管理员的用户名和密码，输入后即可继续执行该操作。可能用到这个功能的一个典型情形是旅行中的便携式计算机用户。例如，如果用户在旅途中急需安装一份软件，那么他可以致电支持中心索取一个本地管理员帐户的密码，然后输入这个密码就可以安装软件了（参见图 3）。如果您将管理员密码提供给了用户，我建议您复原各种进程和工具，以便当该用户重新连接到网络时重置管理员密码，并记录使用这个管理员凭证运行过的程序。还要注意，如果 PC 被恶意软件感染，那么管理员可能会上当受骗，将演示权限赋予他们并不想给的恶意软件。
图 3 要求管理员密码
图 3 要求管理员密码
您也可以选择使用组策略禁用凭证对话。设置“用户帐户控制”：将标准用户设置的升级行为提示设置为“自动拒绝升级请求”（参见图 4）。这是我们建议大多数部署标准用户桌面的企业配置 UAC 时采用的做法。大多数企业采用该配置，以防止用户致电支持中心索取 IT 部门不希望用户知晓的密码。
图 4 组策略阻止的应用程序
图 4 组策略阻止的应用程序
要获得最强级别的桌面锁定，您可以使用 UAC 和标准用户帐户再配合 Windows 软件限制策略 (SRP) 进行设置。借助 SRP，企业就有了更近一步的措施阻止任何没有明确允许的软件运行。SRP 的设计目的是阻止未满足基于 Authenticode® 证书、散列、路径或因特网区域等特定标准的软件运行。SRP 通过组策略进行管理，只需简单的操作，您就可以创建一个非常强大的策略来阻止安装和执行未经批准的程序。一个典型的策略可能会禁止执行所有可执行文件，但在以下路径中找到的可以执行：%WINDIR% 和 %PROGRAMFILES%，并将策略应用到除管理员外的所有用户。
设置了该策略后，IT 人员仍然可以将所需的任何软件安装到 Program Files 目录中而无需将每个 .exe 都添加到许可列表（一个可接受项目的列表）中。并且由于标准用户没有访问这些目录的权限，因此标准用户无法将其移动到可以执行的位置。
您可能已经注意到没有提及 Power User 组。这是因为在 Windows Vista 中已经去掉了 Power User 组。为了限制管理员权限，有些组织使用 Power User 组。虽然将某些用户设置为 Power User 可防止其未经批准进行系统配置，该用户（或以 Power User 凭证运行的恶意软件）可能仍能获得更多权限甚至完整的管理凭证。为此，Windows Vista 设置了管理员用户和标准用户两种主要的帐户类型。

桌面管理基础结构
借助文件和注册表虚拟化、新的驱动程序库基础结构以及我介绍过的其他功能，能够大大方便您用标准用户帐户部署 Windows Vista 桌面。然而，即使有了这些技术，除非您有管理基础结构 — 各种工具、进程还有为无法独自完成某些操作的用户提供支持的人员，否则您仍然无法完全支持标准用户环境。您需要考虑的一些问题包括：
软件安装 如果用户无法独自安装软件，那么您需要提供其他方法。使用组策略是一种不需要借助其他任何管理软件的方法。您可以在组策略中，将一个程序添加到“添加/删除程序”列表中。如果用户用这种方法安装一个软件，那么系统就会启动该用户所需的升级权限来完成安装。要采用更强大的解决方案，您还可以使用 SMS 或类似产品。有些解决方案甚至允许您创建自助网络门户，标准用户可从该门户中仔细挑选要安装的软件。
软件更新 您需要有一种在多台 PC 上安装更新的方法，而不是发出一封电子邮件告诉用户“请安装这个更新！”要管理和部署大多数 Microsoft 更新，您可以使用 Windows Server Update Services，这是一个可免费下载的适用于 Windows Server 系统的软件包。要部署范围更广的更新，请再次考虑 SMS 之类的桌面管理产品。
支持流程和人员配备 当用户致电支持中心询问会导致性能故障的问题或希望安装新软件时，大多数情况下，您不能只通过电话告诉他们操作步骤，因为他们可能没有相应权限。您的 IT 部门需要多多利用远程协助和远程管理工具来诊断问题和更改设置。虽然支持中心人员可以使用远程桌面进行远程管理更改，但由于用标准用户身份登录无法批准需要管理员权限的操作提示，所以，甚至 Windows 远程协助的使用方式也会有所不同。
使用明确高效的流程来处理策略异常是至关重要的。我们假设市场推广部某位员工需要安装她正为部门进行评估的一套新图形设计工具的试用版本。由谁来发出安装这个软件的批准呢？她的经理，她的主管还是 CIO？如何将这套软件安装到她的计算机上，她又必须等待多长时间呢？我们建议创建一个与支持中心问题跟踪系统相集成的简单的批准工作流程。一个基本的工作流程可能是这样的：
  1. 用户提交安装程序的请求以及安装程序的链接（位于他们的本地硬盘或光盘驱动器上），并确认该软件不是非法获得，也不会用于恶意目的。
  2. 请求被发送给经理要求批准。
  3. 请求被传送到 IT 部门的应用程序首席技术人员，他会进行检查以确保没有任何已知的兼容性问题，执行病毒扫描，并确保该公司尚未购买该程序的单位许可证，也未向其他供应商购买类似程序的许可证。
  4. 请求被转发给一位技术支持人员，该技术人员远程启动安装并在软件可用时通知用户。
要创建工作流程界面，您可以编写动态网页脚本或获取商业支持或问题跟踪软件包。对于已加入管理和未进行管理的环境，您可以要求不同的人员配备。但愿您只需要较少的技术人员就能对不稳定的或受感染的 PC 进行实际诊断或恢复映像。然而，一开始您可能需要分配更多的人员进行软件打包和部署。
从长远来看，由于机器能够更长时间地稳定运行，所以您付出的支持成本较低，但一开始您的支持中心可能要面对用户询问配置的求助电话增长的局面。等使用用户所需的设置配置了桌面映像和组策略后，打给支持团队的电话就会逐渐减少。

文化
最后一个障碍不是技术障碍，而是心理障碍。有些用户可能对没有管理员权限这种构想感到不适应。但我相信大多数用户不会发现有不同之处。所以，如果您在部署 Windows Vista 时强制使用标准用户帐户，那么集成桌面搜索、崭新的 Aero™ （透明）用户界面以及面向移动用户的改进所带来的生产力提升将远远抵消任何非管理员身份所带来的不便。然而，如果糟糕的流程导致人们要等待几周时间才能获得安装一份软件的许可，那么肯定有些员工会不太高兴。
从根本上说，确保 PC 资产的安全、防止使用未经许可的软件，以及强制遵守政府法规和内部政策是 IT 部门的职责。大多数公司会发现实现这一目标的唯一方法是，制定一套限制拥有管理员权限的用户数量的新政策。幸运的是，您会发现在 Windows Vista 上做到这点容易多了。
更多资源
要获取减少管理员权限的帮助，请参阅：
  • Aaron Margosis 的非管理员博客 — 以最低权限在桌面机上运行
  • “用户帐户团队”博客
  • “用户帐户控制”概述
  • 了解和配置“用户帐户控制”
  • 虚拟实验室：用户帐户控制

Alex Heaton是 Windows Vista 安全团队的高级产品经理。他曾经担任 Microsoft 安全网站（拥有 microsoft.com/protect）的首席站点经理。他也是“用户帐户控制”团队博客 blogs.msdn.com/uac 的撰写者之一。


 Windows Vista: 采用 Windows Vista 时的企业联网
Windows Vista Jason Leznek

采用 Windows Vista 时的企业联网
概览:
  • 下一代 TCP/IP 堆栈
  • 以用户为中心的网络工具
  • 改进网络安全性
  • 简化网络管理

您最近一次试图在一整天不连接企业网络的情况下工作是在什么时候？考虑一下 － 不访问电子邮件。不浏览 Internet。您不能使用
打印机或文件共享功能。您不能访问您所需的在销售数据库中的数据。您将根本无法工作。
网络连接对大多数人能否开展工作至关重要。同样，用户对于移动连接的期望也越来越高，他们希望其公司的便携式计算机可以随时随地连接任何公共或家庭网络。您是否对安全性带来的后果感到不寒而栗？
Windows Vista™ 网络团队的工程师了解网络连接的重要性，并且自 Windows® 95 发布以来他们一直在努力追求最佳的网络技术创新。在 Windows Vista 中，网络变得更易于使用、更安全、更易于管理并且可扩展为最大的网络。
自 Windows XP 发布至今已有五年时间。在此期间发生了很多变化，例如用户需要无线网络功能的覆盖范围更广，还有各种政府或行业法规（如 Sarbanes-Oxley 和 HIPAA 法案）的变化，以及用户需要降低成本和更高效地利用当前投资。用户希望可以“随时获得”网络资源，他们即使遇到最轻微的网络连接问题也会感到失望。最后，用户的移动能力比以前更强，他们不仅仅连接您的企业网络 － 他们还可以连接整个城市的几乎所有网络。

从堆栈开始
Windows Vista 包含 TCP/IP 堆栈的更新实施，对其进行了重要改进，解决了多个主要的网络问题，从而提高了性能和吞吐量、提供了更出色的本机 Wi-Fi 体系结构以及用于检查网络数据包的 API。
使网络利用率达到最大化需要对 TCP/IP 配置设置进行复杂的调整。Windows Vista 通过检测网络状况并自动优化性能，消除了手动完成此项任务的必要性。在高损失网络（如无线网络）中，Windows Vista 具有更强的从单个或多个数据包损失中恢复的能力。它可以动态增加或减少 TCP 接收窗口，以充分利用网络连接。在高速/高延迟 WAN 上传输文件或从 Internet 下载文件的用户会发现传输速度得到了大幅提高。
Windows Vista 还包括本机无线网络体系结构（本机 WiFi），作为其核心网络堆栈的一部分。其优势包括可以在许多硬件品牌和型号上灵活部署、无论采用何种硬件都会带来相似的用户体验，以及更加可靠的第三方无线 NIC 驱动程序。Windows Vista 中的无线网络可以集中管理，支持最新的安全协议，并且可为用户提供更加无缝的网络体验。
Windows 过滤平台 (WFP) 是下一代 TCP/IP 堆栈中的一种新体系结构，提供 API，第三方软件开发商可利用 API 参与 TCP/IP 协议堆栈中的多层中发生的过滤决策，而不必编写其自身的内核模式应用程序。该平台还提供对下一代防火墙特性的支持，如已验证的通信以及基于应用程序对 Windows Sockets API 使用情况的动态防火墙配置（基于应用程序的策略）。

为用户提供强大支持
网络和共享中心是用户检查网络状态的唯一渠道 － 如果他们联网，这里会显示他们连接的内容，以及他们连接的是本地网络还是 Internet（参见图 1）。他们还可以查看其计算机上各种网络服务的状态。是否可以发现本地网络上的计算机？是否存在共享的文件夹或打印机？用户还可以创建或连接现有网络，无论该网络是专门的网络还是基础结构无线网络、VPN 或家庭宽带连接。
图 1 网络和共享中心
图 1 网络和共享中心
Windows Vista 还可以诊断和解决许多连接问题，而用户无需呼叫帮助中心。网络诊断框架为 Windows Vista 提供了从应用程序的操作环境识别连接问题的根本原因的能力。例如，如果用户无法访问 Internet 站点，网络诊断会试图跟踪该问题，检查是否存在有效的无线连接和有效的 IP 地址，然后检查访问 DNS 服务器、查找代理服务器以及从 Web 服务器获得响应的情况。
如果发现问题，用户会获得一条消息，其中明确指出问题所在以及解决的办法（参见图 2）。有时用户只需单击响应即可。其他情况下，用户必须进行配置变更，该对话框会为用户提供准确位置。有时用户由于缺乏相关的知识或管理权限而无法采取适当的措施，详细的信息被记录在事件查看器中，以便帮助中心可以快速解决问题，而不必花费数小时进行故障排除。
图 2 解决连接问题
图 2 解决连接问题
Windows Vista 中包含 Network Awareness API，应用程序可以通过调用它获得连接状态，从而使应用程序可以了解连接状态的变更情况，并识别计算机当前连接的网络类型（域、公共或专用网络）。当 Windows Vista 可以访问网络上的域控制器时，它会自动切换到域配置文件。此类别中不会容纳其他网络。所有其他网络会被归类为公共网络，除非用户或应用程序将该网络认定为专用网络。直接连接 Internet 的网络或公共场所（如机场或咖啡店）中的网络应为公共网络。只有通过专用网关设备联网的网络应被认定为专用网络，如家庭或小型企业网络。
借助 Network Awareness，像 Windows Firewall with Advanced Security（稍后讨论）这样的应用程序会根据当前连接的网络类型采用不同的配置，当网络类型发生改变时，会自动在不同配置之间切换。例如，当计算机连接域网络时，管理员可能配置了防火墙，只有打开特定的端口才能访问台式计算机管理软件，但当用户在公共热点上工作时这些端口应自动关闭。
在 Windows Vista 中，也可以通过组策略了解网络状态：当计算机位于域网络上时，它会自动获知，并开始处理所有新的组策略设置，而不必等到下一个刷新周期。这意味着当计算机连接域网络时（即使它刚脱离休眠状态），Windows Vista 将自动检查新的组策略设置。因此，管理员可以在时间紧迫时更快速地部署安全设置。

确保网络安全
威胁的类型多种多样 － 访问无线网络的用户（这些网络并不像它们看上去的那样），连接企业网络的不健康的来宾 PC，试图访问其不应访问的资源的未管理资源等等。这些威胁足以让网络管理员整日忙碌，还要整夜担心网络的安全。Windows Vista 可借助全面而易于配置的增强的网络安全特性帮助处理所有上述情形。
Windows Vista 中的本机 Wi-Fi 体系结构拥有对最新安全协议的广泛支持，其中包括 Wi-Fi 安全访问 (WPA) 2 企业版和个人版、PEAP-TLS 和 PEAP-MS-CHAP v2（受保护的可扩展身份验证协议-传输层安全，以及受保护的可扩展身份验证协议-Microsoft 质询握手身份验证协议）。这种广泛支持可确保 Windows Vista 与几乎所有无线基础结构之间都具有互操作性。Windows Vista 会对无线网络卡的功能进行检查，当连接或创建无线网络时，默认情况下会选择大多数安全协议。利用 EAP-HOST 框架，Windows Vista 能够支持硬件供应商或组织定义的自定义身份验证机制。
Windows Vista 包含许多对无线客户端行为的改进，以减少通常的无线攻击。客户端将仅自动连接那些用户提出明确请求或被认定为首选网络的网络，并且不会自动连接专门的网络。如果用户要启动到不安全网络的连接，客户端还会发出警告。此外，客户端还会主动探测为数不多的首选网络，就像用户指示这样做一样，这就使攻击者更难识别客户端试图连接哪个网络，并且客户端会以相同的名字创建模糊网络。
Windows Vista 本机无线客户端支持单一登录 (SSO) 特性，该特性会根据网络安全配置在适当的时间执行第 2 层网络身份验证，同时集成在用户的 Windows 登录体验中。一旦配置了单一登录配置文件，在 Windows 登录之前将先进行网络登录。此特性支持组策略更新、登录脚本和无线启动等需要在用户登录之前进行网络连接的情形。
Windows Firewall with Advanced Security 为 Windows 平台带来了新一级的网络安全性，从而为进站和出站过滤及 Windows 服务强化提供了支持。如果防火墙根据 Windows 服务强化网络规则的定义，检测到某个 Windows 服务表现异常，则防火墙将阻止该服务。Windows Firewall with Advanced Security 还支持 Authenticated Bypass，它支持某些通过 IPsec 身份验证的计算机绕过防火墙规则，执行诸如远程管理等任务。
Windows Firewall 的一个最重要的变更就是它与 IPsec 的集成。过去，管理员需要依赖两个单独的工具 － 防火墙与 IPsec 部署和管理工具 － 来创建层次化的网络安全规则。在 Windows Vista 中，管理员可以创建简单的网络安全规则，从而可将防火墙端口与 IPsec 规则相结合，以保护网络不受未经授权的访问的影响。这一集成为加强已验证的端到端网络通信提供了一种简单的方法，从而提供了对可信赖的网络资源的可扩展的分层访问，并/或保护了数据的机密性和完整性。
管理员可在逻辑上将企业网络隔离成多个区域中，有的区域可以允许任何计算机访问（包括来宾计算机），有的区域只允许在域上经过身份验证的计算机进行访问（域隔离）。管理员可以进一步隔离特定的服务器，使得只有特定的用户或计算机才能访问这些服务器，如只允许 HR 组的计算机访问 HR 应用程序服务器（服务器隔离），如图 3 所示。
图 3 服务器和域隔离
图 3 服务器和域隔离
病毒或蠕虫可通过移动便携式计算机进入专用网络，并快速感染其他计算机。当连接基于 Windows Server（代号“Longhorn”，下一版本的 Windows Server）的网络基础结构时，Windows Vista 将支持网络访问保护 (NAP)，以降低不健康的计算机直接连接专用网络或通过 VPN 连接带来的风险。如果运行 Windows Vista 的计算机缺乏最新的安全更新、病毒签名或无法满足企业安全要求，则 NAP 会阻止计算机对网络的完整访问。它将连接受限制的网络，可从该网络下载和安装为符合当前健康要求所需的更新程序、防病毒签名或配置设置。

简化网络管理
Windows Vista 中的网络特性旨在支持高级可管理性，以帮助降低部署无线网络和网络安全策略的成本，并为应用程序和用户提供出色的服务质量。Windows Vista 使用组策略或通过 Network Shell (NETSH) 编写命令行脚本来全面管理网络特性，因此您无需学习或部署新的管理工具，您可以利用您在已经创建的 Active Directory® 和 Organizational Unit (OU) 结构上的现有投资。
在单一向导驱动的名为 Windows Firewall with Advanced Security（参见图 4）的 Microsoft 管理控制台 (MMC) 单元中或通过 NETSH 编写命令行脚本，网络安全规则的部署和管理 － 将防火墙和 IPsec 策略相结合 － 变得更加轻松简单。新单元为部署进站或出站过滤和连接安全规则提供了一种简单的方法，可限制只有特定用户、计算机或应用程序才能访问，同时提供了精细的管理控制。IPSec 可请求或要求用户、计算机进行身份验证或健康认证（与网络访问保护集成），以提供基于情形的安全策略。该单元使得服务器隔离或域隔离规则的创建非常轻松，因为它基于组策略，因此您可以根据您的业务结构锁定这些规则。
图 4 Windows Firewall with Advanced Security
图 4 Windows Firewall with Advanced Security
利用组策略，您还可以定义移动客户端如何连接无线网络以及如何在无线网络上运行。例如，公司可以定义一个策略，要求所有无线连接都使用某一协议或者所有连接必须限制在某一无线网络内。由于这些设置都是通过组策略完成的，因此可以防止最终用户改变这些设置。
NETSH 支持自动化和编写脚本，以协助对无线网络连接进行故障排除。利用命令行界面，管理员可以验证、更改或删除客户端的无线网络配置文件。还可以将这些配置文件导出和导入其他计算机，以加速多台计算机的设置。
网络质量会有所下降，因为高宽带应用程序往往会占用所有可用容量，并且应用程序的编写并未为 IT 管理员提供集中控制。增加更多带宽无法解决这种问题，这样只会导致同样的应用程序占用新的可用容量。借助基于策略的服务质量 (QoS)，管理员可以对出站网络流量排列优先级和/或进行遏制，而无需修改应用程序。这些策略可以对出站网络流量标记一个差分服务代码点 (DSCP) 值，以便路由器排列优先级，或让 Windows Vista 遏制发送的出站网络流量的数量，而与路由器配置无关。将这两种技巧相结合可以带来更大的灵活性。图 5 显示了 QoS 策略的创建。
图 5 创建 QoS 策略
图 5 创建 QoS 策略

扩展到企业及更大范围
企业级组织在为其网络提供支持时往往会担心可扩展性问题。例如，您的可用 IP 地址即将用完，尤其当由于业务需要每个用户拥有多台联网设备时，如附加的便携式计算机和移动设备（如智能手机）。同样，您可能对提供附加的网络设备（如 IPsec）感兴趣，但同时又会担心会对 CPU 负载产生影响。Windows Vista 可通过支持 IPv6 和硬件卸载功能解决网络可扩展性问题。
为通过有限的公共 IPv4 地址解决问题，许多政府、ISP 和其他组织正在向下一版本的 Internet 网络协议 IPv6 过渡。Windows Vista 可通过双层 IP 堆栈体系结构同时支持 IPv4 和 IPv6。它在默认情况下启用 IPv6，双层堆栈支持使您可以使用 IPv6 过渡技术逐渐迁移，该技术使 IPv6 网络流量可通过专用 IPv4 网络或 Internet。Windows Vista 本机支持 PPPv6 和第 2 层隧道协议 (L2TP/IPv6) 虚拟专用网络 (VPN)，使远程访问用户可以利用 IPv6 网络的优势。
Windows Vista 支持将网络流量处理任务卸载给专门的网络适配器。新的卸载功能包括 IPv6 和 TCP Chimney 卸载。这些体系结构创新可优化性能和网络吞吐量，从而使目前的高速网络可以实现性能和运行速度的提高。使用兼容的网络适配器硬件可消除与网络数据包处理（如 CPU 开销和可用内存带宽）相关的瓶颈，而无需更改现有应用程序或网络管理工具。
网络堆栈还支持接收方扩展，该功能可对进站网络连接进行动态均衡，从而使负载可以分摊在多个处理器或内核上，从而降低在处理网络流量时可能出现的瓶颈。

总结
自 Windows 95 发布以来，Windows Vista 对 Windows 的网络特性进行了最重要的更新。用户会发现在其出行时可以更轻松地利用有线和无线网络。借助新的自动调整网络堆栈，文件传输的速度将更快。企业将受益于安全风险的降低，其中包括移动和无线用户可以获得更出色的威胁保护。系统管理员会发现 Windows Vista 更易于管理，并且能够创建精细的网络流量安全策略并为关键任务应用提供出色的 QoS。这些新特性使您可以利用您的网络基础结构完成更多工作，同时降低管理投入并最大程度提高最终用户的工作效率。
其他资源
  • Windows Server“Longhorn”和 Windows Vista 中的新网络特性
  • Windows Vista 和 Windows Server“Longhorn”中的下一代 TCP/IP 堆栈

Jason Leznek 是 Windows Vista 网络部门的高级产品经理。他在 Microsoft 任职近 10 年，在加入 Windows Vista 团队之前，是 Windows Server 更新服务和组策略部门的产品经理。在此之前，他在与 Microsoft 企业客户合作方面拥有七年的工作经验。


 Windows Vista: 为 Windows PE 2.0 做好准备
Windows Vista Wes Miller

为 Windows PE 2.0 做好准备
概览:
  • Microsoft Windows 映像技术
  • 驱动程序更新和维护
  • 无需干预的自定义安装

在前两期的 TechNet 杂志的中，我讨论了 Windows 预安装环境（或 Windows PE）的发展历史，涵盖了各种设计决策以及您当前应如何使用 Windows® PE。在本文中，我将重点讨论 Windows PE 2.0，此版本将与 Windows Vista™ 同时发布。本文并非要深入探讨如何使用各个功能。而是对 Windows PE 2.0 中的新特性和功能进行了简要介绍。在本文中我将为您介绍一些实际操作信息，但关于如何使用 Windows PE 2.0 的详细讨论将在今后的文章中提供。
在最初设计 Windows Vista 时，Windows 安装团队（我曾经是该团队的成员）主要关注构建全新的安装体系结构、创建新的映像工具以帮助完成部署，并设计远程安装服务 (RIS) 的替代功能。但随后我们的注意力转向了过渡性的 Windows PE 和 Windows XP Service Pack 2 (SP2)，然后转向了 Windows Server® 2003 SP1。这意味着我们对 Windows Vista 中的 Windows PE 的开发工作有一定的拖延。但过渡性的 Windows PE 更新程序使我们可以提供一些我们最初计划在 Windows PE 2.0 版本中加入的功能，因此我们的工作并没有完全偏离轨道。
Windows PE 团队在定义我们希望加入的新功能时（参见“Windows PE 2.0 新功能”边栏），重点关注可持续性和 Windows PE 用户通常的使用情形。接下来介绍主要的新功能。

使用映像
关于 Microsoft® Windows 映像 (WIM) 技术和 Windows 部署服务，有几个基本概念您必须了解。设计 WIM 完全是为了用于以映像（以前被称为 Sysprep 映像）的形式部署 Windows。大多数映像工具都是基于磁盘扇区的，而 WIM 是基于文件的。这意味着 WIM 并不是复制硬盘的每个扇区，而是提取每个文件和与之相关的元数据（访问控制列表、短文件名和长文件名等）并将数据保存在一个文件中。
WIM 映像的一个主要优点就是一个 WIM 文件可以保存多个卷的一个副本（每个 WIM 文件被称为一个卷映像）。无论收集了多少个文件，每个文件在映像中只保存一份。这称为单一实例 (Single Instancing)。尽管所采用的技术有很大不同，但此方法与远程安装服务所采用的方法的作用类似。用于创建 WIM 映像的工具称为 ImageX。（注：它曾一度被称为 XImage，但后来名称改为 ImageX。）
在我们开发 Windows Vista 及其新的基于映像的安装引擎（它将使用 Windows PE 部署操作系统）时，我们发现我们或许可以使用一些技巧来节省介质上的空间。当时我们并不确定 Windows Vista 以 CD 还是 DVD 形式发行，因此我们必须使安装程序占用的磁盘空间降至最低。由于 CD 上组成 Windows PE 的所有文件的版本与其相邻的 WIM 文件中的文件都相同，因此我们开始考虑在 WIM 文件中加入 Windows PE，然后从其 WIM 文件开始引导。凭借 Windows 核心操作系统团队的一位架构师的出色努力，我们的想法变成了一系列原型，并在 2003 年于专业开发人员大会上发布 Longhorn（现在的 Windows Vista）的开发人员预览版之前集成在了产品中。现在，Windows PE 保存在介质的一个 WIM 文件 (boot.wim) 中，安装文件保存在另一个 WIM 文件中 (install.wim)。尽管我们最初构想的 Windows PE 和 Windows 之间的单一实例不再是安装介质的一部分，但 Windows PE 仍然得益于由于压缩在光盘上而节省的空间。通过集成 Windows PE 1.6 中的 RAMDisk 引导功能，还增加了在初期的 WIM 引导工作完成后交换介质的能力（以便在引导完成后取出初始引导 CD/DVD）。
在 WIM 中加入 Windows PE 映像就像使用 ImageX 提取文件（我会在即将发布的一篇文章中详细讨论此问题）并向 ImageX 提供 /boot 标志表明该映像为可引导映像一样简单。将此文件当作引导扇区。当 Windows 启动管理器加载 WIM 文件时，/boot 标志提供的标记会表明 WIM 文件中的哪个映像（一个或多个）是可引导映像。请注意，只有 Windows PE 可以通过 WIM 文件进行引导。您不能通过 WIM 引导任何 Windows Vista。并且，WIM 是只读文件（由于是在 CD 或 DVD 中）。因此，您不能从 Windows PE 的 WIM 映像进行引导然后修改任何文件。要对 Windows PE 进行更改，您必需修改 WIM 文件。

处理驱动程序
在 Windows PE 中，我们始终将注意力放在大容量存储和联网设备支持上。然而，Windows PE 缺乏对新系统上某些设备的支持的情况仍有发生。Windows PE 1.5 中已经包含了一些针对添加设备驱动程序的改进的支持，但 Windows PE 2.0 进一步简化了这一功能。它目前支持所有类型的设备，这些设备在引导后即可工作 － 不需要任何 factory.exe 或 drvinst.exe。要为 Windows PE 2.0 添加新的设备驱动程序，只需运行新的 peimg.exe 工具，然后它就会添加驱动程序。其语法十分简单，如下所示：
peimg.exe /inf drivername.inf builddirectory\Windows
只需将 drivername 替换为 .inf 的名称（支持通配符，如 net*.inf）并将 builddirectory 替换为您的 Windows PE 映像所在的目录的名称即可。

暂存空间
在 Windows PE 下运行的应用程序经常面临的一个问题是，许多 Windows 应用程序（甚至许多 Windows 本身的组件）都希望运行在可写存储器上。当从只读介质（如 CD-R）运行时，许多应用程序的运行就会出现问题。例如，当我首次尝试在 Windows PE 下运行 Microsoft Internet Explorer® 时（最终当我只尝试运行 Windows 组件 MSHTA 或 Microsoft HTML 应用程序时），主要 DLL 文件无法注册，因为它们需要可写存储器来完成某些注册过程中必须完成的任务。
在 Windows PE 2.0 中，不会存在这一问题，因为其中有高达 32MB 的暂存空间可用于进行文件系统的写操作。因此，以前由于 Windows PE 的只读特性而无法工作的组件现在在新版本中都可以正常工作了，因为它们可以对磁盘执行必要的写操作。在暂存空间问题上，这与 RAMDrive（Windows PE 用户一贯使用的方法）不同，Windows PE 2.0 的暂存空间位于与引导卷相同的卷上 － 而 RAMDrive 占用的是另一个临时驱动器。

可选组件
与以前版本的 Windows PE 一样，新版本也提供可用于增加其他功能的可选组件。（当然，这些组件会增加占用的空间，这也是它们为什么是可选组件的原因。）新版本仍旧提供对 Windows Script Host (WSH)、Windows Management Instrumentation (WMI) 和 MSHTA 的支持。您现在可以添加对 MSXML、Windows Vista Recovery Environment、附加 Windows 字体和正式 Microsoft Data Access Components (MDAC) 的支持，MDAC 取代了先前的 ADO 来提供 SQL 支持，包括一些但并非所有 MDAC 支持。但在这里最重要的变动是添加这些组件的难易程度。组件的实施不必通过编写麻烦的 WSH 脚本来实现，而是可以通过使用 peimg.exe 轻松添加或删除 － 此工具也是我在前面讨论的用于添加驱动程序的工具。

语言包
Windows Vista 最初的开发宗旨之一是采用多语言用户界面 (MUI) 的概念 － Windows 2000 中引入了此概念，并在 Windows XP 中得到了改进 － 并在整个操作系统中实施此概念。在 Windows 2000 和 Windows XP 中，您可以指定除英文以外的一种语言，但 MUI 本身开始运行时要依靠英文版本的操作系统。即您可以同时保留英文和您希望使用的其他一种语言。
这种情况在 Windows Vista 中有所改变。我在这里不会详细介绍所有的具体信息，但我必须指出，这一改变对于 Windows PE 非常重要。在早期版本的 Windows PE 中，并不提供对 MUI 的正式支持。 您必须通过您希望为其提供语言支持的本地化语言版本的 Windows 构建。 现在，添加或改变语言支持可以像添加或改变其他任何可选组件一样操作 － 利用 peimg.exe 添加或删除语言包，以满足您特定的 Windows PE 需要。

更好的维护
较早版本的 Windows PE 还缺乏维护支持。要添加 Service Pack，您必须彻底重建 Windows PE。要添加修补程序，您必须手动临时添加 － 如果您有勇气的话。考虑到 Windows PE 非常小，只包含有限的 Windows 功能，并且不会运行太长时间，因此我们没有将这一情况当作问题。直到出现了严重的 Blaster 漏洞。由于 Windows PE 中包含远程过程调用，在一定的情况下该漏洞会攻击并导致 Windows PE 不断重启。
因此我们在 Windows PE 1.5 中加入了 Windows Firewall。随后，团队开始着手确保未来版本的 Windows PE 可以像完整版的 Windows 一样进行维护。Windows Vista 的一个需要关注的主要方面就是可维护性得到了改进。Windows PE 继承了这一点。就像该操作系统的其他可选组件和语言一样，Windows PE 利用 peimg.exe 执行更新程序。更新程序将通过 Windows 下载中心提供。

无需干预的文件支持
您可能对 winbom.ini 很熟悉，在较早版本的 Windows PE 中该文件用于驱动一个名为 factory.exe 的小应用程序。新版本对这些文件进行了替换。新版本中有一个新的 XML 基础结构，您可以用其自定义 Windows PE（这与 Windows Vista 中无需干预的安装使用的 XML 机制相同）和一个新的名为 wpeinit.exe 的应用程序。
在 Windows Vista 中，Wpeinit.exe 使用标准的 unattend.xml 格式来指定 Windows PE 自定义和操作。图 1 显示了一个可用于自定义 Windows PE 的 unattend.xml 文件示例。unattend.xml 文件的格式被作为 Windows OEM 预安装工具包 (OPK) 和 Windows 自动安装工具包 (WAIK) 的一部分记录在文档中，我稍后将对此进行讨论。
Figure 1 unattend.xml 文件的结构 (Close Figure 1)
XML 文件 评论
<ComputerName>MyWinPEMachine</ComputerName>
 将 Windows PE 系统下的机器名设为 MyWindowsPEMachine。
<Restart>Shutdown</Restart>
 在重新启动（而不是像较早版本的 Windows PE 那样重新引导）后关闭系统。
<RunSynchronous>

<RunSynchronousCommand> <Order>1</Order> <Path>notepad.exe</Path> </RunSynchronousCommand>
 运行 notepad.exe。
<RunSynchronousCommand> <Order>2</Order> <Path>cmd.exe</Path> </RunSynchronousCommand>
 当 notepad.exe 完成时，cmd.exe 运行。
</RunSynchronous>

<EnableFirewall>true</EnableFirewall>
 在引导时启用 Windows Firewall。
<PageFile> <Size>1000</Size> <Path>C:\pagefile.sys</Path> </PageFile>
 在 C: 驱动器上设置 1GB 的页面文件。
<LogPath>C:\mylog.txt</LogPath>
 将 wpeinit.exe 和此脚本的输出记录到 C:\mylog.txt 中。

Windows 部署服务
正如我在前面提到的，我们的一个主要目标是通过转移到一个统一的基础结构上（无论从 CD、DVD 还是网络进行安装）改进基于网络的安装。但在执行基于 RIS 的 Windows 安装时，在安装过程中要进行大量额外的工作。我们希望尽可能消除这种复杂和多余的工作，为此，我们构建了 Windows 部署服务。
就像 RIS 一样，Windows 部署服务也是基于 PXE 的安装。但与 RIS 不同的是，它通过网络启动 Windows PE，并利用与通常基于 CD 或 DVD 的安装相同的基于映像的安装基础结构，同时提供自 Windows 2000 之后 RIS 提供的集中式企业安装基础结构。关于 WIM 和 Windows 部署服务的内容有很多，无法在本文中一一详述。但是别担心，我会在即将发布的一篇文章中详细讨论这些内容 － 因此继续关注。

使用 WAIK
在这一点上，您可能希望了解如何开始使用 Windows PE 2.0。第一步是获得 WAIK。较早版本的 Windows PE 作为 Windows OPK 或软件保障介质的一部分发行。由于 Windows PE 2.0 计划提供给所有授权的 Windows 客户，因此 Microsoft 为非 OEM 客户创建了 WAIK。
WAIK 提供了创建您自己的 Windows PE 2.0 副本所需的所有 Windows PE 构建工具。您现在就可以通过 Windows Business Desktop Deployment (BDD) 2007 beta 获得其中包含的 WAIK。除了 WAIK 之外，BDD 还提供了有关如何使用 WAIK 及其工具的指导。毋庸置疑，要想真正熟悉 Windows PE 2.0 及所有包含在 Windows Vista 中的其他新的安装和部署技术，最好办法就是尽快开始体验这些产品。
Windows PE 2.0 新功能
Windows PE 2.0 包含 Windows PE 1.6 中的所有功能，并增加了一些新的功能和组件，包括：
  • 从 Microsoft Windows Imaging (WIM) 映像内部引导
  • 驱动程序注入和实时即插即用支持
  • 可写暂存空间（即使从 CD 引导）
  • 轻松添加可选组件 － Microsoft 核心可扩展标记语言服务、Windows 恢复环境、Microsoft 数据访问组件
  • 语言包
  • 无需干预的文件支持
  • 构建和更新 Windows PE 的改进工具

Wes Miller是位于德克萨斯州奥斯汀市的 Pluck 公司 (www.pluck.com) 的一名开发经理。在这之前，Wes 在位于奥斯汀市的 Winternals Software 公司任职，并曾在微软担任 Windows 程序经理和产品经理。Wes 的联系方式如下：technet@getwired.com。


 Windows Vista: 新 Microsoft 应用程序兼容性工具包介绍
Windows Vista John Melton

新 Microsoft 应用程序兼容性工具包介绍
概览:
  • 影响应用程序兼容性的变更
  • 评估对应用程序的影响
  • 管理迁移和部署

Windows Vista 即将发布，您现在应该开始准备评估、部署和支持新操作系统（包括新工具、新特性和新培训）。当然，您的主要任务是确定这个重要的 Windows 版本如何在您的现有环境中发挥作用。
我认为首先应该从您的全部应用程序组合开始着手，确定哪些应用程序可以与 Windows Vista™ 一起正常运行。
Windows Vista 有一些主要变更可能会影响应用程序的兼容性。在开发 Windows Vista 期间，确保应用程序兼容性是一个重要的考虑因素。通过将数千个应用程序与每个版本一起测试，并向工程团队提供关于其变更对应用程序影响的即时反馈，在开发周期中减少了兼容性问题。
这一过程将大多数兼容性问题减少到几个方面。在本文中我将讨论这些方面并提供一些技巧，以帮助您克服在部署中可能遇到的障碍。

影响兼容性的变更
一些应用程序可能由于某些原因只在特定的操作系统版本上运行，这会导致在您测试应用程序之前安装或程序执行失败。
幸好通过使用 Windows Vista 中的程序兼容性助手 (PCA) 可以轻松解决这类问题。PCA 会在安装过程中自动检测可能存在的兼容性问题，然后建议将设置修改为 Windows® XP 兼容性模式，从而允许您安装并继续进行测试。
如果其他一切能与应用程序一起正常运行，那么只需修改应用程序版本检查或将应用修补程序应用到台式计算机上即可，这会让应用程序运行起来就像在较早版本的操作系统上运行一样。
如今的信息高速公路与 2001 年 Windows XP 发布的时候已大不相同。目前在系统安全方面存在更多的漏洞。Windows Vista 实施了大量新的安全特性，这些特性可在您的应用程序兼容性体验中发挥作用。
Windows Vista 中的 Microsoft® Windows 资源保护 (WRP) 使应用程序即使在试图改写受保护的系统文件和注册表位置时也能无缝运行。WRP 会自动创建一个临时工作区并为应用程序会话重新定向写操作。此技术可以使 Windows XP 中运行失败的应用程序在 Windows Vista 中正常运行，从而相比以前的操作系统版本提高了兼容性。然而，此临时工作区只适用于当前的应用程序会话，因此当您从一个会话进入另一会话时您将无法保留任何数据。
在 Windows Vista 中您可以通过用户帐户控制 (UAC) 实施 Windows XP 中熟悉的管理员和标准用户。许多公司在 Windows 2000 和 Windows XP 中实施标准用户情形时都非常费力。在 Windows Vista 中，Microsoft 提供了更加强大的标准用户体验，当标准用户或应用程序承担起管理员级的任务时增加了相应的提升提示。对于应用程序，您需要通过使用 Microsoft 应用程序兼容性工具包和 UAC 评估器（稍后将提供详细信息）确定在作为标准用户运行时哪些应用程序可能会受到限制，并确保应用程序不会在不必要的情况下试图执行管理员级命令。
由于 Internet Explorer® 是许多用户访问 Internet 的一个重要窗口，因此 Microsoft 在 Windows Vista 中采取了一些措施，以降低通过引入 Internet Explorer 保护模式而带来攻击的可能性。Windows Vista 中的 Internet Explorer 将在必要的情况下作为标准用户运行，从而限制其对计算机中某些区域的写能力，从而避免使系统感染恶意软件或病毒。您还可以使用 Internet Explorer 兼容性评估器 － 随 Microsoft 应用程序兼容性工具包提供 － 以确定哪些 Intranet、Extranet 或 Internet 应用程序可能受到保护模式的限制。
创建新操作系统最大的好处就是能够带来创新 － 提供新特性、新功能并利用新的硬件技术。然而这种创新也会给应用程序兼容性方面带来一些挑战。
安全性在 Windows Vista 中发挥着重要作用，一个需要注意的方面就是针对防火墙和防病毒应用程序的更加强大的新 API 结构。然而，该附加的功能意味着许多企业需要将其第三方防火墙和防病毒软件升级到新版本。WinLogon/GINA（图形识别与认证）架构在 Windows Vista 中也已被取代，因此您需要检查与身份验证凭据一同工作或通过身份验证凭据的应用程序。
您还要考虑获得新的更强大的 64 位处理器和操作系统。虽然 32 位应用程序在这种系统上应该能正常工作，但您需要确保安装了 64 位驱动程序。注意，64 位 Windows Vista 平台上不支持 16 位应用程序。

评估应用程序的影响
应用程序兼容性工具包旨在帮助您清查、分析您的现有应用程序组合、使其合理化并排列优先级。图 1 列出了工具包的组件。图 2 介绍了工具包中包含的单独的兼容性评估器。
Figure 2 工具包兼容性评估器 (Close Figure 2)

评估器 | 描述
库存 | 查看多个系统区域，收集关于每台计算机上的应用程序及其相关组件的信息。
Internet Explorer | 监控 Internet Explorer 7.0，以发现可能存在兼容性问题的基于 Web 的应用程序。 记录 Web 位置，以方便进一步处理。
用户帐户控制 | 监视用户与应用程序的交互，当用户发出提升安全性的请求时，记录应用程序信息，以方便进一步处理。
GINA | 监视在原有架构的基础上应用程序的凭据的使用情况，并记录这些应用程序，以方便进行必要的修改。
已被否决的组件 | 查看 Windows Vista 中不再支持的原有技术（如 FrontPage Server Extensions）的使用情况。当在应用程序中检测到这种使用情况时，对这些应用程序进行记录，以方便进一步处理。
会话 0 | 检测会话 0 的具体请求，并相应地记录应用程序。Windows Vista 中对会话 0 进行了完全保护，应用程序不能再在此会话中运行。
Figure 1 应用程序兼容性工具包组件 (Close Figure 1)

组件 | 描述
兼容性评估器 | 多个可以在一台计算机上运行的评估器，用于检测和记录可能的应用程序兼容性问题。
日志处理 | 在单独的计算机上记录累积的兼容性信息，并在预定义的时间间隔内将其发送给中央日志文件。
库存数据库 | 应用程序兼容性管理器利用其制作报告，并启用了许多新字段，以帮助管理每个应用程序的部署流程和状态。
应用程序兼容性管理器 | 中央管理工具，提供监控和更改与部署流程相关信息的功能。
Microsoft Compatibility Exchange | 一种共享兼容性信息的社区资源。其他兼容性信息可从 Microsoft Compatibility Exchange 检索获得，包括其他客户的结果、Microsoft 认证信息以及关于应用程序的供应商信息。
基本上，要了解和确定 Windows Vista 可能对您的应用程序造成的影响有四个步骤。
首先，您需要清查您企业中的所有应用程序及其在应用程序兼容性方面的已知状态。您可能会使用像 Systems Management Server (SMS) 这样的软件管理系统来帮您完成这一工作，或者可能只使用一个较旧的可信赖的电子表格，但两种方法都不能为您提供兼容性状态。随应用程序兼容性工具包附带的兼容性评估器可以提供这一重要信息。
要创建可以部署到台式计算机上的兼容性软件包，第一步就是收集全部应用程序库存（参见图 3）。您可以使用兼容性评估器来确定哪些应用程序会受到可能的兼容性问题的影响。该软件包还可以通过您的整个软件管理系统进行部署 － 它非常小，在客户端运行时只占用非常少的资源。而您将收到关于您的计算机和应用程序的兼容性信息。
图 3a 创建兼容性软件包
图 3a 创建兼容性软件包
图 3b
当您收到兼容性评估器返回的第一份报告时，您会希望获得最新的兼容性信息。下一步就是与 Microsoft Compatibility Exchange 同步。单击“发送和接收数据”图标，提供您的登录信息，您将与 Microsoft Compatibility Exchange 建立连接。这是您的兼容性信息的来源，可以帮助您分析您的应用程序组合，使其合理化并排列优先级。“应用程序报告”将包含其他社区成员、软件供应商和 Microsoft 提供的关于您的应用程序组合的信息，可为您显示这些应用程序的兼容性状态。此外，您还可以轻松了解到已知问题和可能的解决方案，并可减少您需要进行的全部测试次数。如果已经发现了某个问题，您就没必要对其进行测试然后重新发现该问题了，也不必去寻找解决方案。
现在您的目标是减少您需要关注的应用程序的数量。最高效的流程是对您的应用程序进行组织和分类。
首先使用应用程序兼容性管理器内置的过滤功能。库存列表将包含许多您不必关心的应用程序（参见图 4）。例如，如果您要更换硬件，则无需担心 OEM 提供的硬件驱动程序或特殊应用程序。
图 4 应用程序兼容性管理器中的过滤功能
图 4 应用程序兼容性管理器中的过滤功能
下一步是开始制定您如何组织这些应用程序，以减少应关注的应用程序数量。考虑一下应用程序是全局性的还是某些特定地域或特定部门的。哪些应用程序您可以依赖供应商来为其提供支持，您的工作人员需要关注哪些内部业务线应用程序？可能要创建开发人员类别并为每个开发人员创建子类别，以便分配程序。一旦您确定了您的组织战略，您就可以开始对您的应用程序进行分类了。
您可以利用应用程序兼容性工具包，通过选择“组织”特性和创建您自己的个人条目来创建类别和子类别（参见图 5）。这些条目将在报告选项中提供，因此您可以为每个子类别项创建非常具体的报告。
图 5 指定类别
图 5 指定类别
分析阶段的最后一步就是为您的每个应用程序或计算机分配类别。需要指出的是您的移动员工将从中受益，因为 Windows Vista 提供了许多新特性以提高移动员工的体验，因此您会希望为这些应用程序创建类别或子类别。您可以为应用程序分配多个类别，因此可以创建开发团队类别，以团队成员的名字作为子类别，这样您就可以跟踪哪个成员负责哪些应用程序了。

管理修改和部署
在对应用程序进行最初分类后，您就可以进一步精简列表了。在一台机器上可以显示几百个应用程序，但您不应关注所有应用程序。记住，目标是大幅缩减应用程序的列表，以便只关注必要的迁移工作。在合理化过程中，可以从优先级列表中筛选出来的应用程序包括那些即将达到其使用寿命并正在更新或重新构建的应用程序。您还可以发现如果组织中存在多个应用程序版本，这些版本可能会被整合成一个版本，以方便对其进行支持。应用程序的供应商或 Microsoft Compatibility Exchange 可能已经识别出应用程序是否兼容，因此无需再关注这些应用程序。您会发现有些应用程序并不在计划升级的地域或部门内。
应用程序兼容性工具包中的“自定义报告”特性可帮助实现应用程序的合理化。您可以选择特定的类别，从而使合理化后的应用程序列表缩减为一个特定的组、地域或位置。这样应该可以帮助您关注那些需要投入更多兼容性工作的应用程序。
在将应用程序组合精简为可管理的应用程序组后，您可以集中关注一系列明确的应用程序兼容性问题，以实现新操作系统的平稳、及时的部署。利用“优先级”特性，您可以为每个应用程序分配特定的优先级和类别。
应用程序兼容性工具包中有一些附加的特性，可帮助您完成管理应用程序状态和部署信息的流程。通过在“测试”、“迁移”和“准备部署”之间进行选择，使您可以跟踪某个应用程序的状态。在“报告”部分中，您将看到所有应用程序的整个部署状态。
在这里您还可以增加您关于应用程序的信息。您可以对应用程序进行验证，并创建或编辑特定于该应用程序的新问题（参见图 6）。与 Microsoft Compatibility Exchange 共享此信息将会在其他管理员分析其自己的环境时为其提供帮助。
图 6 记录应用程序的兼容性状态
图 6 记录应用程序的兼容性状态

总结
现在您了解了在开始部署 Windows Vista 之前应关注哪些应用程序。有关 Microsoft 应用程序兼容性工具包的详细信息，请访问 microsoft.com/technet/prodtechnol/windows/appcompatibility。

John Melton 在信息技术领域拥有 20 多年的工作经验，在过去 10 年中一直在 Microsoft 任职。John 以前担任系统工程师，目前是 Windows Vista 和 Microsoft 应用程序兼容性的团队产品经理。


 Windows Vista: Windows Vista 中新的事件管理工具
Windows Vista Val Menn

Windows Vista 中新的事件管理工具
概览:
  • 新的事件基础结构
  • 事件类型
  • 结构化事件属性
  • 使用 XPath 表达式

许多人认为事件记录和跟踪是一件烦事。而另一些人则抱怨，事件跟踪和记录多半是一些辅助活动（如调试和自我监控功能）的“副产品”，没必要对事件记录与跟踪功能过分重视。
为了扭转这些观念，Microsoft® Windows Vista™ 在企业管理方面向前迈了一大步。Microsoft 对一些重要组件及其用户界面进行了大幅改进。事件日志服务已经被完全重新编写，编写时充分考虑了企业需求，而跟踪则变得更加快捷、安全。
设想一下，如果为关键任务系统配备一组能发现和解决问题的更好的工具那该多棒。能够支持技术人员轻松收集来自用户系统的可作为证据的事件与跟踪的功能是不是很不错？如果您的开发人员能够使用由动态出现的用户发送的跟踪来诊断并修补一个部署系统中的 Bug，情况又会怎样？假设您拥有更加简便、功能更强大的收集信息和快速进行故障排除的方法 — 那么事件记录与跟踪将不再是件烦事，不是吗？

什么是事件？
计算机应用程序就如用一个执行某种功能（或多种功能）的一个“黑盒”。许多工作是在盒子内部完成的，但是由于您无法对盒中情况探其究竟，因此很难理解其内部的工作方式。然而，应用程序是要对外与其他程序和用户进行通信的。这些通信“事件”使您能够对该应用程序有一个概括了解。
而对于软件，事件一般被定义为软件系统中的偶发事件，其需要与外界（“外界”指的是用户或其他程序）进行交流。这类事件通常对应着状态或配置的改变。它可以就软件系统当前的状态或配置以及发生改变的原因进行通信。
更宽泛一些，“事件”这一术语还被用来指这些偶发事件的公开方式。有许多这类公开事件的示例：
  • 用于进程间通信 (IPC) 的 Win32®对象
  • 用于临时（非永久性）通知的 WMI 事件
  • Windows 事件跟踪 (ETW) 可以跟踪保存到跟踪文件中的事件
  • 保存到事件日志实时日志中，或者可能被存档到事件日志文件中的事件日志事件
  • 使用自定义基础结构保存到文件中的事件
在此列出的最后三个示例涉及了我们将要在本文中介绍的事件类型。

事件使用方式
跟踪或记录的事件是对程序或操作系统中的偶发事件的记录。这些跟踪和事件日志不仅仅适用于开发人员。它们为 IT 和技术支持人员提供了必备的工具，能够及时了解正在运行的应用程序的状态和内部工作情况。
您可以使用这类日志监控整个系统的运行状况。使用事件日志，您可以搜索任何注明有问题的事件。例如，您可能发现在 CertificateServicesClient 源程序的应用程序日志中的错误事件 6 带有下列消息：“本地系统自动认证注册失败 (0x80070576)。客户端或服务器端的时间和/或日期存在差异。”同样地，您还可以检测组件从出现问题状态返向正常操作状态的过渡。例如，当时间和日期差异被更正后，同一个 CertificateServiceClient 源程序将在应用程序日志中发布信息事件 19，该事件带有下列消息：“<用户名>的认证注册成功收到一份来自认证机构<机构名称>的 AutoenrolledWindowsSystemComponentVerification 证书。”这种信息对于发现并解决与配置有关的冲突和其他问题非常重要。
该信息还为诊断问题提供了便利。您可以找到导致问题的程序和系统并发现能够帮您确定问题根源的详细信息。类似地，您还可以使用该信息评估并解决性能问题。
事件日志还提供了宝贵的信息，您可以用来确保环境更加安全。它们可被用来检测入侵企图、审核系统历史记录、确保不得否认性以及发现未正确配置的资源。

Windows Vista 中的事件
以前版本的 Windows® 在事件记录和跟踪方面存在许多缺陷。其中包括：事件日志的可伸缩性有限（这使得所有日志的总的大小被限制为不超过可用内存的数量）、事件发布性能有限（这限制了一个活动域控制器可发布的事件的数量）、跟踪事件的安全性有限。
借助新的事件记录和跟踪工具（称为 Windows Eventing 6.0），Windows Vista 解决了许多这类问题。该工具扩展了自 Windows 2000 以来一直在使用的 Windows 事件跟踪 (ETW)，并取代了事件日志服务和事件查看器。新的 Windows Eventing 是专为处理日志文件中的事件以便今后进行检查而设计的。（它不是针对于类似 IPC 和通知机制的临时事件。）
通过提供安全性和可伸缩性解决方案，自定义的事件记录和跟踪实施应该不太重要了。请注意，在保持与现有事件日志和 ETW API 完全兼容的同时，提供了增强的功能，这意味着所有现有应用程序将无需改变，继续可用。

查看事件的新方法
现有事件查看器是 IT 社区中最常用的 Windows 程序之一。新的事件查看器已经被完全重新编写，由于其包含在 Microsoft Management Console (MMC) 3.0 中，其外观已发生变化，但仍然非常类似，因此，从现有的查看器向新的查看器过渡应当相当简便。
其中依旧包括三个窗格和一个事件列表。您仍可以使用类似的应用程序、系统和 Windows 日志节点下的安全日志。然而，根节点下添加了一些新的节点，我们很快将要讨论的新的 ForwardedEvents 日志已经被添加到了 Windows Logs 节点下。
最明显的新功能是位于事件列表下的预览窗格。它包括聚焦事件的属性。这意味着您不再需要双击某一事件以查看该事件的属性，您不必调整窗口以查看列表和“事件属性”对话框。仍然可能需要双击一个事件以便在对话框中显属性。不过，新的对话框不是模式对话框，因此您可以同时显示多个事件属性对话框。
新的视图使您只需点击几下鼠标就可以显示想要查看的所有事件。可以为一个或一个以上的日志文件收集事件，并关注特定的 ID、级别（安全性）或时间框。
请注意，在“自定义视图”节点下，您将发现 Administrative Events（如图 1 所示）。其提供了一份管理员感兴趣的各类日志文件的所有错误和警告的列表。
图 1 Administrative Events
图 1 Administrative Events
那么，我们如何确定管理员会对哪些日志和事件感兴趣呢？我们明确了五种单独的事件类型以及与每一类型相关的用户。图 2 中对此进行了详细说明。这是对各组可能感兴趣的所有事件日志和跟踪事件进行的一般而有效的划分。
Figure 2 事件类型及其用户 (Close Figure 2)

事件类型 | 说明 | 使用者
Admin | 对于多数系统管理员而言，Admin 类型已经足够了。这些事件级别较高，通常提供足够的信息来识别问题和确定解决方案。至少，Admin 事件应该识别问题发生的时间，并且当应用程序、组件或系统处在不正常状态或从不正常状态恢复时，给出提示。多数 Admin 事件是错误或警告，它们通常是可操作的。 | 管理员、技术支持人员以及监控和分析程序
Operational | 与 Admin 事件类似，Operational 事件支持问题诊断。Operational 事件不仅包含错误和警告。它们还能通知用户如何正常使用应用程序或操作系统组件。这些事件的量很少，因此，Operational 事件的使用不会影响系统性能。Operational 事件 — 以及 Admin 事件 — 可以被技术支持人员、监控食用程序以及一些经验丰富的管理员使用。 | 高级管理员、技术支持人员以及监控和分析程序
Audit | Audit 事件提供了对资源访问或用户采取的行动的历史记录。这些事件本身并不代表程序的成功或失败，而只表明操作的失败或成功。审核事件可以根据粒度的不同级别被完全禁用或有选择地启用。支持操作系统级的安全审核（事件日志安全日志中可找到的事件）。 | 高级管理员、安全审核员以及 Forensics 专家
Analytic | Analytic 事件与 Operational 事件完全不同，它们可以在应用程序和组件的正常操作过程中被记录。但 Analytic 事件的量和详细程度远大于 Operational 事件，因此，它们有可能对系统性能造成负面影响。因而，Analytic 事件正常情况下是被禁用的。要使用 Analytic 事件，应在诊断会话开始之前启用它们，并在检查跟踪之前禁用它们。 | 技术支持人员、监控与分析程序
Debug | Debug 事件也是正常情况下被禁用的大容量事件。它们主要由开发人员使用，很少有 IT 专业人员查看。 | 开发人员
Windows Eventing 有指定的类型。日志中的所有事件都具有该日志的类型。图 1 中的视图是使用该类型信息定义的 — 它从 Admin 类型的日志中挑出所有错误和警告事件。

Windows Eventing 体系结构
Windows Eventing 基础结构包括允许由程序发布事件对象并传递给日志文件的软件组件。ETW 提供了用于从其事件发布服务器向其目标位置传递所有类型的事件的传输过程。在 Windows Vista 中，ETW 也已经被修改，现在可提供更好的性能和全球性。通过 ETW 发布事件是个异步过程，因此不会影响发布程序的性能。当系统收到新的事件时，关于当前用户环境以及发布过程的信息被收集并附加到事件中。
事件发布后，以不同的方法来处理不同类型的事件。由于 Analytic 和 Debug 事件通常规模较大，它们需要经过最少的处理即被保存到文件中以避免影响系统性能。因此，这些事件会被立即保存到跟踪文件中。
Admin 和 Operational 事件很少能在不影响系统性能的情况下支持其他处理过程。这些事件被传递给事件日志服务，事件日志服务将它们保存到实时事件日志中并选择性地将它们传递给实时订阅服务器。订阅服务器可以使用我很快会介绍的查询语言来分拣将要传递给它们的事件。
值得一提的是，有两类对 IT 社区特别重要的订阅服务器。这些订阅服务器包括功能更强的 Windows Vista Task Scheduler 以及能够被用于向远程事件收集器发送事件的事件转发器。

结构化事件概览
事件日志常常被抱怨包含了大量的“垃圾”。也就是说，它们充斥了大量重要性较小甚至不重要的事件，这些事件会隐匿一些重要事件。而一些事件提供的很少信息，对于某位用户而言，似乎毫无用处，而对于另一位用户则可能非常有价值。
Windows Vista 提供了过滤掉不重要事件的方法，使您可以只关注那些对您而言至关重要的事件。该方法以事件日志服务支持的跨日志查询语言为基础。为了使用该方法，所有事件必须遵循定义良好的结构。
以前版本的事件日志提供了一些事件结构，但这类结构未被良好定义，而且仅对 Win32 API 是可见的。在 Windows Vista 中，事件有了定义良好的结构。实际上，使用带有已发布架构的 XML 可以在外部表示事件。这使创建这样的查询成为可能：在过滤掉对您不相干的事件的同时收集对您至关重要的事件。由于要使用 XML，XPath 被选作事件查询语言的基础。当然，结构化事件的使用为自动化开启了新的大门，可以使用新的 Task Scheduler 集成工具来查看事件的使用情况。.
事件预览窗格被包含在“详细信息”选项卡中。在“事件属性”对话框中也有相同的选项卡。选择“事件属性”对话框中的 “详细信息”选项卡可以展示事件的 XML 表示。图 3 显示的示例是 Task Scheduler 的一个 Operational 事件。它包含两个部分。System 部分由一般的事件信息组成，对于该事件的每一个事件实例而言（这些信息都是通用的），以及发布实例时收集的一些参数。EventData 部分，该部分是可扩展的，包含应用程序的结构化信息。
图 3 事件的 XML 表示
图 3 事件的 XML 表示
每一个事件日志文件都被看作一个这类结构化事件元素的序列。这提供了一个事件日志和事件存档文件的逻辑的、可读的视图。在内部，事件被以二进制格式存储，旨在确保紧密性、可靠性和搜索性能间的平衡。

事件属性
XML 数据的 System 部分提供了时间发生的时间、过程 ID、线程 ID、计算机名以及用户的安全标识符 (SID)。在以前版本的 Windows 中，事件有两大属性 — EventID 和 Category。XML 还提供了其他详细信息，包括 EventID、Level、Task、Opcode 和 Keywords 属性。让我们进一步了解一下这些属性。
EventID 和 Version：使用 EventID（一个两字节数）和 Version （一字节数）的组合可以唯一地识别一个事件。共享 EventID 和 Version 的同一个事件提供程序的所有事件也共享相同的结构。
Level：该值代表一个事件的严重性和详细程度。通常使用 5 种预定义的值：1（重要）、2（错误）、3（警告）、4（信息）、5（详细），但提供程序可以自行定义最大不超过 255 的值。更高的数值对应更详细的事件。
Task：Task 属性通常识别事件提供程序功能的一个常规方面（如打印、网络或 UI）。它还可以指程序的一个子组件。Security Audit（安全审核）事件可以更广泛地使用这些属性。每个事件发布服务器可以定义自己的一组两字节数值。请注意，Task 属性的含义与以前版本的 Windows 中的 Category 属性在语义上通常是匹配的，Task 属性可看作 Category 属性的一个扩展集。因此，事件查看器在名为 Task Category 的列中显示了该值。
Opcode：这是一个一字节的值，通常用于表示软件执行的某一特定操作或操作的一部分。该值通常在跟踪基于活动的过程时被使用（如 Web 服务，其中活动是 Web 服务接受的一项特定请求）。有一些预定义的值，其中最常用的是 1（开始）和 2（停止）。
Keywords：这是一个有 56 标志的掩码，可以通过程序设置以便对类似事件进行轻松分组。每个事件可以有一组以上的标志，表示该活动属于多个组。

理解发布服务器和事件
如果您事先不了解事件日志和跟踪文件中可能找到的信息的类型，则很难前瞻性地进行事件跟踪与记录。因此，对于新的事件记录基础结构，我们的主要目标之一提供针对每个事件发布服务器的文档，其中包括关于事件组及其目标位置的信息。
为了实现这一目标，每个发布服务器必须枚举所有它将发布的事件，以及这些事件的结构。可以使用发布服务器的二进制文件（程序或 DLL）对信息进行编译、编码和保存。
现在，有可能发现所有通过事件记录系统注册的发布服务器，以及每个发布服务器的配置。包括查看发布服务器可能记录的所有潜在事件的完整列表，这些事件的结构及其相关消息 — 这些事件被引发之前的所有信息。图 4 显示了如何使用命令行实用程序 wevtutil 显示提供程序的配置。图示的命令显示了系统已知的关于名为 Microsoft-Windows-Video For Windows 的事件发布服务器的所有信息。
图 4 使用 wevtutil 显示提供程度的配置
图 4 使用 wevtutil 显示提供程度的配置

查询语言的工作方式
正如前面介绍的，新的基础结构中的事件的结构化特性使我们能够包含对查询语言的支持，查询语言基于标准的 XPath 表达式。一般而言，给定一个起始位置（XML 元素），XPath 表达式可以指示元素中的任意位置。（关于 XPath 语言的完整说明，请参阅 w3.org/TR/xpath 处的正式参考资料）。更常见的是，一个 XPath 表达式指示包含在起始元素中的另一个元素。由于事件日志实质上是事件元素的序列，您可以假设各日志如下所示：
<root>
<Event>... </Event>
...
<Event>... </Event>
</root>
根元素没有名称 — 它仅仅用作所有 XPath 表达式的上下文。仅仅定义前向轴，这意味着一个 XPath 表达式可以引用事件元素，事件元素的子元素，以及它们的属性。如果一个 XPath 表达式选择一个存在的元素，则评估为“真”。考虑一下一个基于如图 3 所示的事件的非常简单的 XPath 表达式：
*/System[Provider/@Name='Microsoft-Windows-TaskScheduler' and Level <= 2]
该表达式可以从具有 2 级或更小级别（表示所有错误和关键事件）的 Microsoft-Windows-TaskScheduler 事件提供程序选择所有事件元素（“all”用星号表示）。
在使用简单的 XPath 表达式从单个日志选择事件的同时，简单的、功能强大的基于 XML 的查询语言支持从任何日志或外部日志档案选择和禁止事件。实际上，查询语言在 Windows Vista 事件中普遍存在。例如，自定义视图就是基于查询的。您可以使用查询语言来指定在事件查看器的“事件列表”窗格中应当显示哪些特定日志中的事件。您可以使用该语言来订阅事件、归档所选事件并触发新的 Task Scheduler 中的任务。
实际的查询 XML 或 XPath 表达式必须提供给事件日志命令行实用工具。不必为每个人定义这类查询，因此，事件查看器只提供了创建通用查询的简单 UI。例如，图 5 所示的“创建自定义视图”对话框可被用于创建一个针对所有 Task Scheduler 事件的视图。请注意，每个查询创建对话框都有一个题为 XML 的选项卡，该选项卡显示了查询文本，使您能够直接编辑查询。
图 5 创建通用查询的 UI
图 5 创建通用查询的 UI

查询的通用方法
查询有多种使用方法。但是，有些方法显然比其他方法更常用。例如，查询通常被用于在事件查看器或事件日志命令行实用程序中查看事件选择。
您可以使用 Windows Task Scheduler 将任务与查询相连。当发布与查询匹配的事件时，Task Scheduler 将启动指定的任务。请注意，这一功能使用订阅并能对新到达的事件做出反应。您可以只订阅 Admin 事件和 Operational 事件；Debug 事件和 Analytic 事件被直接写入跟踪文件，当它们发生时，系统无法对其进行检查。
查询可被用于对选择的事件进行存档。您可以从任何类型的实时日志、下一级事件存案（EVT 文件）、外部跟踪文件或 Windows Vista 事件存档文件。存档文件可在事件查看器中打开，备份到次要存储设备中或发送给技术支持人员以便诊断问题。所有事件说明和与事件相关的其他设置可以在存档操作过程中以选择的语言连接到存档文件。这样一来，在任何机器上，事件均可以以选择的语言来使用，并带有全部事件说明。
最后，查询可被用于将事件转发给专门收集事件的系统。这一功能使用新的事件收集器服务，该服务允许管理员创建对远程计算机的事件订阅。这些订阅存在于收集器计算机中，并且能够使用可配置的计划来重新尝试。事件收集器使用符合行业标准的 WS 管理协议创建对远程计算机的订阅，并使用 WS 事件协议传送事件（这两个协议是安全和不受防火墙影响的）。事件收集器接收的事件被保存到本地事件日志中。

总结
Windows Eventing 的变化是巨大而影响深远的 — 本文只能对它们进行一些简单介绍。单单事件转发功能可能就需要一整篇的篇幅来阐述。
事件系统在性能、可伸缩型、可靠性和安全性方面做了改进。但是不要忘记主要的目标是提高 Windows 的可管理性。查询语言以及事件查看器视图使您能够更轻易地发现问题。与 Task Scheduler 的紧密集成为简化监控、自动解决问题和快速通知问题状况提供了方法。事件转发支持事件存档、服务器和桌面机的无代理监控。
所有这些功能都能在不影响后向兼容性的情况下进行实施，这意味着现有解决方案仍然继续可用。最终，这些对事件记录的改进会帮助组织更有效地管理它们的系统。

Val Menn任职于 Microsoft 管理基础结构组，担任事件日志软件项目经理。他曾担任软件工程师和许多新项目的系统管理员。


 Windows Vista: Windows Vista 中更强大的组策略
Windows Vista Jeremy Moskowitz

Windows Vista 中更强大的组策略
概览:
  • 组策略的基础架构
  • 改进了网络识别特性
  • 新增的组策略功能

Windows Vista 中彻底更新了组策略的基础架构。然而当 Windows Vista 在全世界的组织中部署时，许多管理员可能并不会发现组策略功能的全新变化到底给组策略的操作
带来了什么变化。不过管理员们将会发现，Windows Vista™ 的组策略比以前 Windows 版本中的组策略更加强大。
在 Windows Vista 之前，组策略的处理过程在一个称为 winlogon 的进程中发生。Winlogon 有许多作用，其中包括让用户登录到桌面，以及维护各种各样的组策略操作。现在组策略有了自己的 Windows® 服务。而且更为牢固，这意味着无法停止该服务，管理员也无法获取组策略的权限所有权来将其关闭。这些更改增强了组策略引擎的整体可靠性。
而这仅仅是开始。让我们更深入地来看看对新的组策略所做的一些重大更改。

改进了网络识别特性
在 Windows Vista 之前，组策略引擎会尝试判断您是通过低速链路还是高速链路登录系统。然后它会据此来帮助设置要使用的策略设置。如果使用低速链路，组策略不会将全部组策略设置发送给系统，因为全部发送要耗费相当多时间进行下载。这种辅助方式在新的组策略中仍然存在。然而，所做的改变是计算当前网络带宽的方法。
确定这个速度的方法是向域控制器发送网际控制消息协议 (ICMP) Ping 数据包。这种方法在实际应用中会出现许多问题。第一，许多管理员会关闭路由器上的 ICMP。第二，如果连接使用了高延时链路（如卫星），那么计算结果就不可靠。在这些情况下，组策略引擎没有任何有保证的方法来确定该链路是否真正是高速链路。
而且，当机器从休眠或待机模式恢复时，组策略引擎完全无法知道所发生的变化。组策略引擎也不会知晓您是不是断开网络六个月后又突然拨入网络。使用运行 Windows XP 或 Windows 2000 的机器，用户可以拨号上网、收取电子邮件然后断开连接—所有这些操作都不会刷新组策略。大多数管理员都希望，能够在从休眠或待机状态恢复的系统或长期断开连接后重新拨号的计算机上，根据需要执行组策略刷新。
经过更新的 Windows Vista 组策略具有足够的智能程度，可以实时识别网络连接情况。主要变化在于，在 Windows Vista 中，组策略引擎使用了 Network Location Awareness 2.0 (NLA) 处理程序。一旦有域控制器可用，NLA 服务就会向组策略引擎发出通知。而且，在这种情况下，会根据需要执行组策略刷新。

多个本地 GPO
在 Windows Vista 面世之前，系统仅支持一个本地组策略对象 (GPO)。如果您在命令提示符中键入 GPEDIT.MSC，然后更改某些设置，那么所做的更改会影响到使用这台机器的所有用户和管理员。这样就常常会出现问题，比如以下情形：您要从开始菜单中删除普通用户的 Run（运行）命令，但要为管理员保留该命令，这就无法实现。
新的多个本地 GPO 工具使用 GPO 层解决了这个问题。这个功能很可能主要在没有加入 Active Directory 域的系统上使用。然而，公司用户可能同样会发现这个功能很有用。
新的多个本地 GPO 工具基于层，可能稍有点复杂（见图 1）。仍然有一个默认的本地 GPO，应用于本地计算机系统环境并影响系统上的所有用户。这个 GPO 用于定义 Computer Settings（计算机设置）和 User Settings（用户设置）。
图 1 用户的全部本地组策略
图 1 用户的全部本地组策略
第二层会影响本地系统管理员组的成员或本地系统上的非管理员。根据定义，一个用户帐户不能同时属于这两个组。这个层会判断该用户是一个本地系统管理员还是一个普通用户，然后应用相应的 GPO（管理员或非管理员）。第三层会影响明确指定的本地系统用户账户。
所以本机上的任何一个用户都可能受到三个本地 GPO 的影响。例如，您可以使用这三个层来为特定机器上的每个用户提供设置，较多的设置只影响该机器上的非管理员，而最终设置只影响该机器上的一个用户。
当然，如果系统已经加入一个 Active Directory® 域，那么该 Active Directory 组策略对象会优先于本地策略。还应注意，域管理员可以选择关闭 Windows Vista 的所有本地 GPO 过程。

错误消息和故障诊断
Windows Vista 具有全新的事件日志系统。组策略引擎利用这一新的 Windows Eventing 6.0 系统（通常称为“事件日志”）并将事件分别归入两组特定的日志中。我们熟悉的系统日志（现在是管理日志）中包含了各种组策略错误。如果组策略引擎发生了一个错误，那么这个错误将会被记入系统日志，并说明来自组策略服务（而不是 Userenv 进程）。
新的应用程序和服务日志（这是一个操作日志）是特别为组策略设置的，用于存储操作事件。为了方便阅读，会在这个日志中列出组策略引擎执行的每个步骤，这个日志也因此基本上取代了使用不便的 userenv.log 故障诊断文件。

ADM 和 ADMX
从 Windows NT® 4.o 时代开始，ADM 文件就用于为组策略可执行的操作提供基础定义模板。ADM 文件并不能管理组策略中的所有操作，但它们可用于除 Computer Configuration（计算机配置）| Administrative Templates（管理模板）之外的 User Configuration（用户配置）| Administrative Templates（管理模板）下的所有配置。
从功能上来说，这些 ADM 文件有一些缺陷。在 Windows Vista 之前的 Windows 版本中，每次创建一个新的 GPO 时，都要将大量 ADM 文件复制到每个 GPO 的文件夹（位于 SYSVOL 中）中，每个 GPO 的这个文件夹都达到大约 5MB 大小。由于有许多 GPO，所以在 SYSVOL 下会放置许多重复的系统模板文件，进而这些 5MB 大小的数据块中创建了大量副本。
此外，ADM 文件与语言相关联。一个 ADM 文件是用一种语言创建的，任何使用该文件的用户都必须使用预定的语言选项。
Windows Vista 中的组策略解决了这些问题，它引入了一种新的基于 XML 的格式用于策略定义文件，这种新格式称为 ADMX。ADMX 文件本身不与语言关联。然而，它们必须配合使用某种语言特定的 ADML 文件。您只需要添加更多的 ADML 文件与一个 ADMX 文件配套，就可以方便地添加多种语言。
ADMX 格式支持中心库。这样就消除了所有重复信息的复制操作，使得更新 ADMX 文件的操作更为方便。假设要更新一个 ADMX 文件，可能要安装 service pack—您只需将更新的文件放入中心库即可。该域中使用 Windows Vista 工作站的所有组策略管理员都可以访问这个更新的 ADMX 文件。而在以前，您需要确保每个管理员的机器上都有所有更新的 ADM 文件的正确副本，那时，这已经是一个相当严峻的挑战了。
域管理员需要在 SYSVOL 手动创建中心库，要为各个 Active Directory 域创建一次。创建了中心库之后，使用 Windows Vista 机器的所有管理员创建和管理 GPO 时都会自动使用这个中心库。请注意这是 Windows Vista 的一个特有功能，Windows Vista 机器要加入一个 Active Directory 域检查是否存在中心库。您不需要等待代号为 Longhorn 的下一个 Windows Server® 版本，也不需要将您的用户的机器都转换到 Windows Vista。不管域是基于 Windows Server Longhorn、Windows Server 2003 甚至 Windows 2000，都可以进行该操作。为了使用中心库，您只需要创建中心库，然后使用 Windows Vista 机器来创建或管理 GPO。
我们已经说过，ADMX 和 ADML 文件都基于 XML。XML 的主要优点是采用了业界标准语言。有必要指出的是，虽然还没有 ADMX 图形编辑器（微软也没有发布这样一个编辑器的计划）。也没有可用于将您的自定义 ADM 模板从 ADM 转换为 ADMX 的工具。
Windows Vista 将附带大约 130 个 ADMX 文件，这些文件将取代以前的 Windows 版本附带的 6 到 8 个 ADM 文件。这些文件位于 \Windows\PolicyDefinitions 目录，如图 2 所示。请注意这些 ADML 文件存放在指定语言的子目录下，如 en-US 目录下存放美国英语版本。
图 2 在 \Windows\PolicyDefinitions 目录下的 ADMX 文件

组策略管理控制台
Group Policy Management Console，即 GPMC，需要下载后安装到 Windows XP 和 Windows Server 2003 上。GPMC 是一个可编写脚本的 Microsoft 管理控制台，提供了一个可以简单管理组策略的具。。
GPMC 现在已完全成为 Windows Vista 的组成部分。这意味着只要您准备创建或编辑 GPO，您都能方便地使用这个最适宜该任务的工具。只要在 Windows Vista Start（开始）| Search（搜索）命令提示符下键入 GPMC.MSC，就可以开始创建或编辑过程了。

要管理的新内容
Windows Vista 带有大约 800 种新的策略设置。这些策略设置可划分为多个类别，其中有许多您已经了解并在使用。但 Windows Vista 还加入了一些很棒的新类别，这些类别完全没有出现过或缺少组策略控件。
组策略增强的方面包括有线和无线联网策略、Windows 防火墙和 IP 安全、打印管理、桌面外壳、远程协助和 Tablet PC。请注意更新后的有线和无线策略可能要求进行全面的方案更新（有关这方面的详细信息，请参阅 microsoft.com/technet/itsolutions/network/wifi/vista_ad_ext.mspx）。
Windows Vista 组策略中新增的控制范围包括可移除存储设备管理、电源管理、用户帐户控制、Windows 错误报告、网络访问保护以及 Windows Defender。
要控制这些特定的影响 Windows Vista 机器的方面，您必须使用 Windows Vista 机器（或 Windows Longhorn Server 机器）来创建或编辑 GPO。这是因为较早的操作系统无法识别这些 Windows Vista 特有的新设置。
探究其中任何一个方面都需要整篇文章的篇幅，所以这里无法深入探讨每个方面。不过，可移除存储设备管理功能和电源管理功能（见图 3）特别值得一提。我想这些功能将给所有管理员带来巨大便利。总之，这些方面可以合理细致地管理可以连接到 Windows Vista 的设备和应用到便携式计算机、台式机和显示器的电源设置种类，从而可用来节约公司开支。
图 3 通过组策略加强电源管理
图 3 通过组策略加强电源管理
使用 Windows Vista 中新增的电源管理设置，管理员可以选择关闭视频显示器，或将非活动的视屏显示器设置为低能耗的“睡眠”模式。发表在环境保护局的能源之星网站上的论文显示，通过控制显示器的耗电，每台显示器每年能节省 10 到 30 美元。当您的公司里有几百台或者几千台显示器时，节约的费用就确有意义了。
至于可移除的存储设备管理，请考虑以下情况：管理员希望允许学生使用他们的 USB 闪存来存取学期论文、课外作业或其他位于任何校园机房工作站上的文档。然而，由于可能使用不当，以及潜在的安全风险，应禁止学生在校园机房工作站上对 USB 驱动器进行写入操作—当然，除非是经过学校批准的 USB 驱动器。使用 Windows Vista 组策略设置，可以进行如此细致的设备管理。

总结
您能看到，Windows Vista 管理功能的这些改进是彻底而全面的。管理员会发现，Windows Vista 组策略提供了强大灵活的配置管理功能，并显著增加了可配置的设置和新资源，从而提高了系统的安全性（实际上降低了成本）。
组策略的前景展望
当 Windows Vista 上市时，您将或多或少看到本文介绍的各种功能。不过，组策略团队已经在考虑下一个将推出的版本了。更多的组策略功能很可能出现在 Windows Longhorn Server 设计进度表中。虽然 Windows Vista 最初上市时不具备这些功能，但它们很可能通过 Service Pack 或其他一些加载项方法添加到 Windows Vista 中。所以，尽管这些即将提供的功能可能发生变化，但有三个重要方面的改进已经确定。而且要澄清的是，没有 Windows Longhorn Server 这些功能可以正常使用。
注释 一个备受关注的特性是为每个 GPO 或任何特定的组策略设置的用途增加注释的功能。的功能现在，进行注释的唯一方法是将您的 GPO 和设置记录到电子数据表等工具中，然后再添加注释。增加输入注释的功能将会很受欢迎。
模板 有时一个管理员希望为其他管理员指定一个创建自己的 GPO 的起点。组策略模板将提供这个功能。使用模板开始创建过程，管理员就能够继续创建他们自己的定制 GPO。Microsoft 很有可能将常见方案添加到最初的模板组中，并提供如何控制各类机器的具体指导。（有关该功能的详细信息，请参阅常见方案文档和文件。）
搜索和筛选器 由于策略设置众多，因此要找到所需的特定策略设置有时是相当不容易的。幸运的是，将要提供的搜索功能将使得按照策略设置的标题、说明文字和注释进行搜索更为方便。您还能一目了然地得知在 GPO 中启用或禁用的策略设置，从而能够更方便地快速更改错误的 GPO。
您可以访问 Windows Server Feedback Portal 提交更多的组策略功能请求，网址为 windowsserverfeedback.com。

Jeremy Moskowitz是 MCSE 和组策略方面的 MVP，他管理着 GPanswers.com，这是一个关于组策略的社区论坛。他还负责一个为期两天的组策略深入培训课程。他的最新著作是《组策略：配置文件和智能镜像》(Group Policy, Profiles and IntelliMirror) 第三版 (Sybex, 2005)。请通过 www.GPanswers.com 联系 Jeremy。感谢 Microsoft 组策略团队的 Mark Lawrence 为写作本文提供的帮助。


 编辑视角: 为 Windows Vista 做好准备
编辑视角
为 Windows Vista 做好准备

WINDOWS VISTA 目前 尚处在预发布版本阶段，其最终版本不久将面世。我们整理了本期 TechNet Magazine 为那些计划评估和部署新的操作系统的用户提供指南。
您一定听说过要运行 Windows Vista 需要有新机器。事实绝非如此。Windows Vista 具有以下一些不同的配置：Windows Vista Business、Windows Vista Business Enterprise、Windows Vista Business Home Basic、Windows Vista Business Home Premium 和 Windows Vista Business Ultimate。猜一猜哪一个版本能够带给您最棒的体验！
所有的版本都提供改进的安全性和可靠性，不过仍然可以对其量身定制以提供最合适用户的功能。您可以从准备：版本部分找到与这些版本有关的信息。
衡量您的机器运行方式的最佳方法是使用 Windows Vista 升级顾问。该工具可以扫描您的机器并给出 CPU、内存、图形和附件分级报告。Windows Vista 将根据您的机器的处理能力来进行安装，因此，如果您使用老式图形卡，您不必使用我们封面所示的眩目的新的 Aero 界面。然而，您仍然可以获得改进的安全性、可靠性等诸多优势。
新的安全功能能够有效避免无意间将恶意软件引入计算机中，并可以轻松撤销那些不必要的管理员权限。您可能会从您更加“独立的”用户口中听到一些不中听的言辞，但您可以轻松回答他们 — “安全性最重要”。同样，对于您的人员而言，学习需要一个过程，因此可以下载预发布版本并暂时将其当作正处在沙盒效应期内的版本来使用。您应充分做好准备以应对使用过程中可能遇到的问题。
谈到准备，没有比本杂志更好的资料了，其他 TechNet 计划对其做出了补充。在 Windows Vista Resources for IT Professionals 您会找到许多其他涉及 Windows Vista 测试与部属的 IT 信息。您甚至可在 Windows Vista Team Blog 获得来自 Windows Vista 小组的信息。未来的 18 个月桌面机将面临许多重大变化，提前做好准备必定会有回报。
— JOSHUA TRUPIN

向以下 Microsoft 技术专家致以衷心感谢： Derk Benisch、Steve Campbell、Mike Chan、George Holman、Khushru Irani、Kamal Janardhan、Michael Keigley、Mark Lawrence、David Lowe、Mike Lewis、Nathan Muggli、Michael Murgolo、Roger Wolter 和 Andy Zeigler。


 工具箱: 面向 IT 专业人员的新产品
工具箱
面向 IT 专业人员的新产品
Greg Steen

监视网络
Alchemy Eye
alchemy-lab.com
由于没有根本不会发生故障的绝对可靠的基础设施和应用程序堆栈，所以保护您的利益的最佳方法之一就是比别人更早地发现问题，这就意味着您手上要有性能强大、功能全面的网络监视工具。如果某个服务意外中断，您希望能够迅速作出反应并着手修复问题，而不是在办公室看到上司手里拿着一摞表示愤怒的电子邮件破门而入后才知道出现了问题（当然，他们还把这些电子邮件打印出来）。
Alchemy Labs 提供了一个可扩展的服务监视应用程序，叫做 Alchemy Eye，可帮助您比用户提早一步发现问题。添加一个新服务监视器的操作很简单，而且复制先前创建的监视器也很方便，只需要单击几下鼠标即可。这个应用程序能够为每个服务调用一个服务器，但若要监视同一台机器上的多个 IP 和服务，就必须创建多个应用程序“服务器”。
Alchemy Eye，一个功能强大的网络监视实用程序
Alchemy Eye 提供了多种通知方法，皆可用于所监视的每个服务。您可以选择通知方法，使该应用程序在服务中断和恢复正常时发出通知。您还可以使用以下方法发送通知：电子邮件、寻呼/短消息、ICQ 或 MSN® Messenger。此外，当监视的服务中断时，可以运行一个可执行文件、在 Event Log（事件日志）中进行记录、播放声音、通过 ODBC 连接运行 SQL 查询、运行 VBScript 或 JavaScript，或执行以上所有操作。如果您觉得这些方法还不够用，您可以购买其他通知插件。最后，如果该程序提供的功能或加上可从网站购买的插件都不能满足您的需要，您可以另外付费请公司编写定制插件。
我特别喜欢的一个功能是能够为每个服务添加维护窗口。在这些窗口中可以暂停监视服务器资源，所以可避免计划停机时发出错误警报。您也可以在触发某个事件时尝试重新启动 Windows® 服务，虽然这样做可能需要进行远程 RPC 调用并用一个具有重新启动该应用程序权限的帐户来执行操作（您的基础设施中可能没有这个选项）。
如果您需要监视很多服务，那么您可以用多个文件夹来组织服务组，以便比较方便地管理列表。如果您需要将正常运行报告上交给上司，该应用程序还为您提供了一组 HTML 报告供您使用。您可以生成关于服务可用性、事件日志统计、错误类型和故障计数等内容的各类报告。
价格： 每个许可证 299 美元。

映射站点结构
PowerMapper Professional 4.0
www.powermapper.com/pro.htm
创建站点地图和进行链接检查似乎是每个网络工程师工作中的一部分。Electrum Multimedia Ltd. 的 PowerMapper Professional 4.0 为您提供了构建站点地图（检查错误链接）的简单方法，并能生成美观的站点结构图表报告。
创建了站点地图后，您可以根据自己需要选择站点风格对其进行定制。该应用程序提供了七种内置的地图风格，包括页面云雾、树形视图或目录等。生成的地图也支持鼠标单击操作，因此您可以概览站点地图。对于大型站点，可使用多页打印功能打印出大幅面图画，供展示或信息体系结构会议上使用。
PowerMapper 提供构建站点地图的简单方法
PowerMapper Professional 4.0 的另一个出色功能是可以导出为第三方格式，如 Microsoft® Excel® 和 Google 的站点地图格式。
价格： 349 美元。

书评
《微软 Windows 脚本编写自学指南》(Microsoft Windows Scripting Self-Paced Learning Guide)
过程自动化是所有成功的 IT 运行环境的一个关键因素。没有它，IT 专业人员将陷于日复一日的重复性操作中而不能自拔。根据我的经验，一个真正积极主动的 IT 工作团队会使员工感到更快乐。
因此，Microsoft Windows Script Host 配以 VBScript 可为您提供功能强大的可定制自动化工具，而 Ed Wilson 所著的《Microsoft Windows 脚本编写自学指南》（Microsoft Press®，2004）向您讲述如何从那些难以忍耐的重复性工作中解脱出来。
这本书是从“运营”方面进行阐述的，所以，如果您不是开发人员，也不用担心看不懂。例如，在第二章“插入循环”，讲述了如何以编程方式声明变量，连接到文件系统和注册表，还有如何使用 for 和 while 循环。
掌握了语法后，本书将继续讲述系统管理，并教您如何熟练使用 FileSystemObject 进行文件和目录操作 — 这是实现系统或网络日志自动化的理想方法。
接下来，本书将介绍 Windows Management Interface (WMI) 的强大功能以及如何借助 Windows Script Host 和 VBScript 收集和操作数据。您可以使用 VBScript 以及 Windows Task Scheduler，根据查询 WMI 测试的磁盘阈值来执行操作。
本书的第三部分内容为 Active Directory 服务界面 (ADSI)，讲述如何连接到 Active Directory 并执行各种任务，如导入用户列表并更改用户密码，或基于用户的 OU 成员资格映射驱动器。本书还介绍了如何操作注册表和创建、修改或删除注册表项的操作。
本书的最后一部分介绍如何用 VBScript 管理 IIS 6.0，自动完成创建网站或虚拟目录之类的重复性任务，以及如何连接并使用 Exchange Server 2003 检查队列状态。
总而言之，在所有 IT 专业人员的书架上，本书都应占有一席之地。
价格：44.99 美元。

使用一个功能强大的文本编辑器
TextPad
www.textpad.com
这是一个优秀的编辑器，不仅能准确显示文件的内容，还提供了快速强大的编辑工具，同时支持任何类型的字符集，绝对是 IT 专业人员的必备工具。Helios Software Solutions 的 TextPad 提供了您需要的所有功能。与我试用过的其他编辑器不同，TextPad 能够打开和修改巨大的文件而不会使您的机器或应用程序进程停止响应。这个应用程序仅受所在计算机的虚拟内存容量的限制。
您可以同时打开多个文件，用户界面上提供了供选择的选项卡或列表视图，从而可方便地切换文件。TextPad 还有另一个很棒的称为 Clip Library（剪辑库）的视图，在这个视图中只需双击鼠标，就可以方便快捷地添加控件、MS-DOS® 或 ANSI 特殊字符。 Clip Library（剪辑库）中含有剪贴板历史记录，除了可以选择 HTML 标记和 HTML 字符来将 HTML 加入文本文件外，还可以方便地将以前的剪切内容加入文本。 该应用程序的撤销-重做功能实际上是不受限制的，从而允许您复查打开文档以来执行的所有步骤。
TextPad 最优秀的功能之一是 Document Class（文档类别），即根据文件扩展名对文档类型应用一个颜色标识的可扩展语法文件。这个功能允许您方便地用颜色标识特殊的文件格式，如 HTML 和 VBScript。您可以为实际可想象的任何文件类型创建语法文件，而且如果您不想自己执行创建过程，那么，通常只需要执行一次简单的因特网搜索就能找到您所需的文件（这是一个相对简单的过程）。
TextPad 的另一个有用功能是允许您将常用的各种工具作为加载项添加到这个编辑器的菜单中。例如，在 TextPad 网站上有一个小提示，说明如何使用工具集成功能直接在该应用程序中编辑和运行 VBScript，从而提高管理工作的效率。
使用 TextPad 可打开和修改巨大的文件而不会使机器停止响应
使用 TextPad 可打开和修改巨大的文件而不会使机器停止响应
TextPad 的用户界面已有七种语言的本地化版本，它还附带了一个涵盖十种不同语言的拼写检查词典。本编辑器同样包括所有基本功能，您可方便地查看行号、列位置和进行自动换行。
只需单击鼠标就可以执行搜索、排序和缩进操作，无需往文件中添加任何多余内容。TextPad 提供的“查找/替换”功能极为出色，您可以用这一功能强大却操作简便的方法进行全文更改。您可以按文本或十六进制值、全字匹配或部分字匹配规则进行查找，或优胜劣汰，使用正则表达式快速进行查找和替换。范围可定制为所选文本、当前文档或当前已打开的所有文档。
TextPad 还包括宏功能，如果您需要反复进行相同的击键操作，那么可以方便地录制一个宏来使这些步骤自动完成。
如果这些功能还不够用，可将 TextPad 与 Windows 资源管理器集成，从而可通过右键上下文菜单对任何文件进行快速访问。
价格：单用户许可证 29 美元。

与工具箱专栏联系
如果您希望在本专栏中介绍某个非常喜欢的工具或实用程序，请发送电子邮件给作者，地址为 tntools@microsoft.com。

本专栏所表述观点仅为作者个人之见，并不一定反映 Microsoft 的观点。所有价格都在截稿时经过确认，并有可能发生变动。

Greg Steen是一位技术专家和企业家，他酷爱钻研技术。他总是在寻找能便于 IT 专业人员进行操作和开发的新工具和新方法。


 实用工具特别推荐: Robocopy GUI
实用工具特别推荐
Robocopy GUI
Joshua Hoffman
下载这篇文章的代码: UtilitySpotlight2006_11.exe (1052KB)

这点十分重要。 试想一下，作为 IT 专业人员甚至家庭计算机用户，您不需要复制文件。无论您是要为桌面部署创建一个主镜像、将新的页面发布到 Web 服务器，还是只是备份或重新组织您自己的文档和照片，复制文件都是您每日使用计算机时必定要执行的核心操作之一。
但这就有了一个问题。Microsoft® Windows® 中内置的传统的“复制和粘贴”功能有一些局限性。它在执行简单的任务（将一个文档从一个目录移动到另一个目录等）时处理得还好，但缺乏 IT 专业人员在工作场所所需的高级功能。例如，复制和粘贴操作不包括任何高级复原功能，所以不允许从短暂的网络中断后进行恢复。特别是当复制完整的目录时，它还是一个要么全有要么全无的问题。而使用 UI，您无法选择仅复制新文件还是复制更新过的文件。您可以复制单个的文件、整个目录或什么也不复制。
启动 Robocopy。这个强大的工具包含在 Microsoft Windows Server® 2003 Resource Kit Tools 中，考虑到了上述所有高级功能以及更多功能。Robocopy 支持更多重要的文件复制任务，从而能够真正简化您的工作。我想您将发现最大的好处是，可以创建两个文件结构（可以根据您的选择包括所有子文件夹和文件）的完全的镜像副本而不复制任何不需要的文件。只复制源位置中的新文件或更新后的文件。Robocopy 还允许您保留所有相关文件信息，包括日期和时间戳、安全访问控制列表 (ACL) 及更多内容。
当然，我们都喜欢用各种更样的方式进行操作。有些人更喜欢使用命令行，对于这些人来说，Robocopy 附带的工具很棒。然而，有些人更喜欢用鼠标操作，对于这些人而言，可以使用 Robocopy GUI。这样我们就需要使用 Microsoft MSN Search 团队的系统工程师 Derk Benisch 编写的 Robocopy 加载项。Derk 的实用工具允许用户使用简单而非常熟悉的图形界面（见图 1）来定制 Robocopy 脚本。
图 1
无论您是否要创建要存放所生成的日志等驱动器映射，Robocopy GUI 都允许您指定源路径和目标路径，以及任何自定义选项或要使用的筛选器。这些都是您确实可以用传统的 Robocopy 命令行功能执行的所有功能，但是其中许多功能都已经合并到了图形界面中，从而能够真正简化操作。
Robocopy GUI 还以一些非常有趣的方式扩展了现有的 Robocopy 工具的功能。例如，这个工具支持多线程，允许您创建一个 Robocopy 脚本并执行，然后在这个脚本仍在执行的同时开始创建另一个脚本。它还允许您保存脚本（即使您并没有真正执行过），以便您可以创建一个通用脚本库或与您的同事共享。最重要的是，Robocopy GUI 允许您保存您的默认设置，从而不需要每次都从头开始操作。
Robocopy GUI 包括一个自己的帮助文件，还附带了完整的《Robocopy 参考指南》。该参考包括所有 Robocopy 命令和语法的全部索引，可帮助您确定要使用的设置。
拥有以上这些有用的功能，使 Robocopy GUI 成为所有 IT 专业人员的工具箱的有力扩充。您可以在我们网站的下载分区下载 Robocopy GUI。

Joshua Hoffman是 TechNet Magazine 的技术和组稿编辑。


 SQL 问题与解答: 临时表、64 位处理、镜像及其他内容
SQL 问题与解答
临时表、64 位处理、镜像及其他内容
编辑：Nancy Michell

临时表
问题：我曾听说，为了避免争用问题，最好不要总是使用临时数据库 (tempdb)。事实果真如此吗？我使用临时数据库是因为我需要获得分布在多个表中的数据，甚至随时对它进行修改。借助视图，无法轻易做到这一点。
解答：的确如此，过分使用 tempdb 可能导致发生争用问题。但是，正如知识库文章 (support.microsoft.com/kb/328551) 中所介绍的，争用通常是一种只在较少情况下出现的问题，如当您有数百个 SPID（服务器进程标识符）同时创建和删除大量临时表时。
实际上，使用临时表（可能在也可能不在 tempdb 中）是可接受的一种解决方案。关键在于与构建表的开销相比，您通过从临时表中读取数据所获得的性能提高是否更占上风。
在拒绝该解决方案之前，您需要考虑规模、使用寿命、使用频率，特别是临时表中活动实例的数量。服务器尺寸度量同样非常重要，因为 tempdb 争用可能与硬件有关。
如果您需要在短期内使用大量的小型表，您可以尝试一下表变量，与临时表相比，在这种情况下，表变量更具有优势（请参考下一个问题的解答来了解关于表变量和临时表之间差异的详细介绍，并请参阅“常见问题 — SQL Server 2000 — 表变量”以获得更多信息）。
同样以您为例，如果所有对数据库的查询必须经过临时表创建过程，对原数据模型提出问题而不是仅仅尝试使用它可能也是明智之举。

问题：什么是表变量，它们功能如何？我真的能用它们来代替临时表吗？
解答：临时表与表变量提供了相同的基本功能；事实上，在 tempdb 数据库中，二者都具体化为临时表。然而，如果只插入少量行时，表变量能够表现更为出色。这是因为表变量既不维护统计也不维护索引，因而开销较低。如果表内容不超过数据库引擎要保留在数据缓存中的 8KB 大小的数据库页，在这种情况下，表变量应当是首选。
根据 SQL Server™ Books Online：
  • 表变量的表现类似本地变量。它有良好定义的范围，包括函数、存储过程或在其中声明的批处理。在其范围内，表变量可像普通表一样使用。
  • 在函数、存储过程或表变量被定义的批处理结束时，表变量被自动清除。
  • 与使用临时表相比，存储过程中使用的表变量会导致较少的对存储过程的重新编译。
  • 表变量需要较少的对资源的锁定和记录。
  • 某些情况下，性能可以改进，而状态无法保留。

镜像

问题：我计划使用 SQL Server 2005 镜像以支持更高的可用性。系统将以高可用性模式运行以支持自动故障转移。但是，我仍要运行其他一些镜像中的应用程序以充分利用资源。镜像服务器将支持两类数据库：作为主服务器镜像的 Production 数据库和作为对立数据库的 Staging 数据库。它还支持两类客户端：一种客户端配置了镜像故障转移功能以访问 Production 数据库的客户端，另一类是直接与 Staging DB 相连的客户端。
另外，有些 SQL Server Integration Services (SSIS) 包将在镜像服务器上运行。它们将访问两大数据库，将来自本地服务器中 Staging 数据库的数据传送到主服务器上运行的 Production 数据库。在故障转移过程中，SSIS 包将本地 Staging 数据库的数据传送到本地 Production 数据库（故障转移）。还有我需要了解的与这些配置相关的问题吗？
解答：通常情况下，不建议使用这种配置，因为故障转移后，新的主体数据库可能不堪重负。
功能上，从镜像角度看，似乎不存在问题，但如果您要继续使用本解决方案，应该彻底进行测试。测试应当在最大负荷时和故障转移后以标准配置进行。最大负荷应当是一种估算的未来而非当前的峰值负荷，如果您没有考虑今后的业务需求，一旦负荷超过容量，解决方案将无法工作。
测试可能有效发现网络、磁盘甚至 CPU 的瓶颈，这些瓶颈表现为应用程序响应时间差、吞吐量无法接受、命令超时错误或者镜像服务器中较多的重做队列（这可能会导致依据实际重做率的故障转移时间意想不到的长）。
另外，运行包会断开与出现故障的主体服务器的连接。一旦故障转移完成并且数据库在新的主体服务器中可用，包应该能够与新的主体服务器重新连接。当然，这是依据了这样的假设：包是使用连接重试机制构建的，并且包将正常处理连接错误，如能够从“断开”连接状态恢复。

SQL 服务器和 64 位操作系统

问题：如果我运行 64 位版的 Windows Server® 操作系统，则必须使用 SQL Server 2000 Enterprise Edition（64 位）而不能使用 32 位 SQL Server 2000，对吗？
解答：从 SQL Server 2000 观点看，所支持的唯一纯 64 位体系结构是 Intel 的 ia64。因而，如果 SQL Server 2000 中涉及 64 位支持，指的是 ia64。纯 64 位 ia64 支持的唯一 SQL Server 2000 版本是 Enterprise Edition。既没有像 64 位应用程序一样的运行在 ia64 中的标准版 SQL Server 2000，也没有在 Windows 中的 ia64 Windows®（WOW，可以运行 32 位应用程序的操作系统子系统）系统下运行的标准版 SQL Server 2000。
对于 AMD x64 机器，您有两种针对 SQL Server 2000 的选择，既可以运行 32 位操作系统，在这种情况下，您可以运行任何版本的 SQL Server 2000 和任何服务包 (SP)。也可以在 WOW 中运行 64 位操作系统和 SQL Server 2000（任何版本）SP4。在后一种环境下，SQL Server 2000 并不是纯 64 位应用程序。在 WOW 中，SQL Server 2000 以 32 位模式运行 — 这样，它甚至“感觉不到”这是一个非64 位的环境。
更确切地说，ia64 WOW 和 x64 WOW 是两种完全不同的子系统。在 ia64 中，WOW 必须对受限制的虚拟地址空间进行仿真并进行实际的机器指令仿真。ia64 机器指令仿真与 x86 截然不同 — 它是完全不同的机器。SQL Server 不支持任何其运行在 ia64 WOW 中的组件（SQL Server 2000 或 SQL Server 2005）。
在 x64 WOW 中，情况迥然不同。x86 和 x64 机器的体系结构非常相近。指令集相同（或者基本相同），因此只有 32 位虚拟地址空间必须仿真 — 有针对于此的硬件帮助。因此，有许多支持 x64 WOW 的 SQL Server 组件，如 SQL Server 2000 SP4 和各种版本的 SQL Server 2005。

升级到 SQL Server 2005

问题：我要从 SQL Server 2000 升级到 SQL Server 2005。除了 SQL 代码更新，还要进行哪些应用程序更新？例如，如果我要使用 Microsoft® .NET Framework 客户端连接 SQL Server 2005，则必须将桌面机客户端升级到 Windows XP SP2 吗？
我目前使用 Windows XP SP1 和 Visual Basic® 6.0，以及一些使用 .NET 的应用程序。需要 SQL Server Native Client、.NET Framework 2.0 和 Windows XP SP2 吗？换而言之，升级的整体最小客户端要求是什么？如果我决定采用 SQL Server 2005 镜像，需要变更客户端要求吗？
解答：为了充分利用镜像，您需要使用 SQL Native Client（针对 OLE DB 或 ODBC）或 ADO.NET 2.0 SqlClient。连接字符串应该更改以引用主体服务器及其镜像。
然而，您只需要 SQL Native Client 或 .NET Framework 2.0 来进行客户端镜像感知。以往的客户端能够连接，但不能在主体服务器停机时自动尝试镜像。
您无需接触客户端，即可在客户端与服务器端之间添加 BIG-IP 转换以便通过故障转移手动地将它们从一个箱移至另一个箱。在发生主体服务器连接故障时，您还可以更改应用程序中的代码来尝试与镜像服务器的连接。
系统要求如下：Windows Installer 3.0、Microsoft Windows XP SP1 或更高版本、Microsoft Windows 2000 SP4 或更高版本、以及 Microsoft Windows Server 2003。关于系统要求的详细信息，请参阅“通过 SQL Native Client 使用 ADO”；“将应用程序从 MDAC 更新到 SQL Native Client”以及“SQL Native Client 系统要求”

SQL Server 2000 内存不足
问题：当我运行 Windows Server 2003 SP1 中的 SQL Server 2000 Enterprise Edition SP4 产品时，遇到了奇怪的内存不足异常。图 1 显示我从日志中获得的错误信息。
Figure 1 内存不足错误 (Close Figure 1)
2006-06-23 14:41:40.72 spid77    WARNING:  Failed to reserve contiguous memory of Size= 24641536.
2006-06-23 14:41:40.85 spid77    Buffer Distribution:  Stolen=4800 Free=1744 Procedures=39391
                                Inram=0 Dirty=90621 Kept=0
                                I/O=0, Latched=99, Other=3063345
2006-06-23 14:41:40.85 spid77    Buffer Counts:  Commited=3200000 Target=3200000 Hashed=3154065
                                InternalReservation=587 ExternalReservation=0 Min Free=1024 Visible= 173320
2006-06-23 14:41:40.85 spid77    Procedure Cache:  TotalProcs=9555 TotalPages=39391 InUsePages=1031
2006-06-23 14:41:40.85 spid77    Dynamic Memory Manager:  Stolen=44191 OS Reserved=7648
                                OS Committed=7619
                                OS In Use=7603
                                Query Plan=39088 Optimizer=0
                                General=4183
                                Utilities=140 Connection=7651
2006-06-23 14:41:40.85 spid77    Global Memory Objects:  Resource=1617 Locks=313
                                SQLCache=1836 Replication=204
                                LockBytes=2 ServerGlobal=42
                                Xact=63
2006-06-23 14:41:40.85 spid77    Query Memory Manager:  Grants=0 Waiting=0 Maximum=94533 Available=94533
2006-06-23 14:41:40.88 spid77    Error: 17803, Severity: 20, State: 12
2006-06-23 14:41:40.88 spid77    Insufficient memory available..
我的服务器内存很大 (32GB)。奇怪的是，该问题似乎是随机出现的，导致这一错误的存储过程似乎每 20 次执行就出现一到两次这类异常。
该服务器的性能计数器表明有大量可用内存。惰性写线程 (lazy writer) 没有足够快地向磁盘写入吗？当执行存储过程时，为什么需要如此大量的内存？是选择语句的数量问题还是因为使用了临时表？
解答：这一问题和机器的物理内存数量毫无关系。根据您的 boot.ini 设置方式，应用程序有 2 到 3 GB 的虚拟地址空间。虚拟地址空间是 32 位系统中的宝贵资源。默认方式下，缓冲池将消耗近 384MB 的虚拟地址空间。384MB 被分出来用于线程堆栈和从以下这样一些组件进行分配：这类组件要么太大以至缓冲池无法支持，要么不知道如何从缓冲池分配（第三方扩展存储过程、链接的服务器、COM 组件）。
警告表明近 23MB 的分配失败。这种规模的分配成功与否取决于 384MB 块中其他分配的数量和位置。
您可能会考虑删除一些加载到系统中的第三方扩展存储过程，确定是否存在通过 sp_oacreate 或链接的服务器使用 COM 组件的现象。
当由于在您的存储过程中使用 FOR XML 子句而执行 SQL 存储过程（我们在此没有重复介绍）时，过程可能需要大量内存。然而，如果您想了解更详细的信息，Process\sqlservr\Virtual Bytes 将为您指示仍然有多少虚拟地址空间可用。还有一款称为 VMStat 的工具（包含在随 Jeffrey Richter 撰写的书籍“Programming Applications for Microsoft Windows”附赠的 CD 中），该工具可以确定最大虚拟地址块的大小。此分配中未涉及惰性写线程 (lazy writer)；分配要使用的内存区域不在缓冲池中，对吗？

衷心谢谢以下 Microsoft IT 专家，感谢他们与我们分享了技术与专业知识： Ramon Arjona、Stephen Borg、Sandu Chirica、Robert Djabarov、Guillaume Fourrat、Osamu Hirayama、Alejandro Mihanovich、Maxwell Myrick、Uttam Parui、Shashi Ramaka、Gavin Sharpe、Vijay Sirohi、Jimmie Thompson、Madhusudhanan Vadlamaani、Jian Wang 和 Dave Wickert。


 您好，脚本专家！: 我们当然适应能力很强
您好，脚本专家！
我们当然适应能力很强
Microsoft 脚本专家
此专栏基于 Windows Vista 的预发布版本。文中的某些信息可能会有所变动。
下载这篇文章的代码: ScriptingGuys2006_11.exe (151KB)

您可能 听说过提升职业水平的最佳途径就是关系网络。也就是与业内的其他人建立联系，从而可以向他们学习、与他们共享信息甚至可能从他们那里找到一份新的工作。脚本专家从来就不了解那些职业关系网络的事情（很显然应该这样），但是我们确实知道一些有关计算机网络的事情。这是因为您可以利用脚本实现的网络功能来做许多事情。
Windows® Management Instrumentation (WMI) 提供了许多类，您可以使用这些类来监控您的网络环境。其中有两个类：Win32_NetworkAdapter 和 Win32_NetworkAdapaterConfiguration，您可以利用它们来使用您的计算机上的网络适配器（不然还能是什么）。
我们经常听到的一个问题是：“如何通过脚本来启用和禁用我的网络适配器？”是的，我们不会让问题悬而不决的。我们现在就告诉您，这是不可能实现的。退一步讲，除非您现在使用的是 Windows Vista™ 操作系统，否则不可能。在 Windows Vista 中，Win32_NetworkAdapter 类中加入了两个新方法。Enable 和 Disable。我们待会儿就介绍这两个方法。但是在您还没有彻底灰心之前，我们先告诉您能够对 Windows Vista 之前的操作系统做些什么。对于新手而言，您会发现计算机上的哪些网络适配器是真的可以使用的（参见图 1）。这是件好事，不是吗？
Figure 1 查找网络适配器 (Close Figure 1)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")

For Each objItem in colItems
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo
Next
在图 1 中，我们首先连接到本地计算机上的 WMI 服务。是的，通过 GUI 可以十分轻松地找到本地计算机上的网络适配器，但请试着使用 GUI 来获得远程计算机上网络适配器的相关信息。这就是该脚本（即通常所说的 WMI 脚本）的魅力之一：您只需将 strComputer 的值更改为远程服务器的名称即可对远程计算机运行同一段脚本。
在连接到 WMI 服务之后，我们便可以查询 Win32_NetworkAdapter 类了。此查询将返回计算机上的所有网络适配器的集合。此时，我们只需编写一个 For Each 循环来遍历适配器集合并回显每个适配器的 Name（名称）和 Description（描述）即可。您的输出将类似于：
Name: Broadcom NetXtreme 57xx Gigabit Controller
Description: Broadcom NetXtreme 57xx Gigabit Controller

Name: RAS Async Adapter
Description: RAS Async Adapter

Name: WAN Miniport (L2TP)
Description: WAN Miniport (L2TP)

Name: WAN Miniport (PPTP)
Description: WAN Miniport (PPTP)
只需通过回显 Win32_NetworkAdapter 的各个属性（DeviceID、Manufacturer 和 TimeOfLastReset）即可检索网络适配器的许多信息。有关详细信息，请参见大作“在客户端实现自动 TCP/IP 联网”，当然是位于“脚本中心”啦！

适应变化
使用 Win32_NetworkAdapter 类，您只需检索有关网络适配器的信息即可。如果您要实际更改适配器的一些设置，则需要使用 Win32_NetworkAdapterConfiguration 类。此类不仅提供了有关您的适配器的其他信息（Win32_NetworkAdapter 所不具备的属性），而且它提供了多种方法，使用这些方法可以按照自己的意愿配置网络适配器。
例如，您可能无法启用和禁用适配器，但是您可以启用和禁用每个启用了 TCP/IP 的适配器上的动态主机配置协议（DHCP，Dynamic Host Configuration Protocol）。图 2 显示了一段脚本，该脚本查找所有启用了 TCP/IP 的适配器，检查每个适配器上是否启用了 DHCP，如果没有启用 DHCP，则启用它。
Figure 2 启用 DHCP (Close Figure 2)
strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = 'True'")

For Each objItem in colItems
    If objItem.DHCPEnabled = False Then
        Wscript.Echo objItem.Caption
        intReturn = objItem.EnableDHCP
        Select Case intReturn
            Case 0
                Wscript.Echo "DHCP enabled"
            Case 1
                Wscript.Echo "You must reboot before DHCP will be enabled"
            Case Else
                Wscript.Echo "Error occurred"
        End Select
        Wscript.Echo
    End If
Next
正如图 1 中的脚本那样，图 2 中的脚本连接到本地计算机上的 WMI 服务。然后查询 Win32_NetworkAdapterConfiguration 类。请注意，由于我们仅连接了那些启用了 TCP/IP 的适配器，因而查询中包含一条 Where 子句：
Where IPEnabled = 'True'
此子句指明了我们仅希望获得 IPEnabled 属性为 True 的 Win32_NetworkAdapterConfiguration 类的实例，该值表示与该实例关联的适配器已启用 TCP/IP。
接着，我们使用了一个 For Each 循环来遍历通过我们的查询返回的适配器的集合。在循环中，我们首先检查每个适配器的 DHCPEnabled 属性。如果该属性被设置为 False，表示 DHCP 未启用，所以我们要启用它。我们通过调用适配器对象上的 EnableDHCP 方法来实现这一操作。真的，就是这么简单。
为了更容易看出脚本的执行情况，我们回显了 Caption 属性，以便了解我们当前处理的是哪个适配器。脚本中还包括一个 Select Case 语句，并为最终用户创建了每个可能结果的描述符。EnableDHCP 在完成时返回一个整型值。如果该值为 0，表示方法成功执行，并且已启用 DHCP。如果该值为 1，表示方法成功执行，但是需要重新启动计算机才能使更改生效。除此之外的其他值则表示出现了问题，并且未启用 DHCP。我们使用 Select Case 语句来检查这些整型值并返回一个适当的消息。
您也可以禁用 DHCP；此操作可以通过在适配器上设置静态 IP 地址和子网掩码来实现（参见图 3）。
Figure 3 设置 IP 地址 (Close Figure 3)
arrIPAddress = Array("192.168.0.12")
arrSubnetMask = Array("255.255.255.0")

strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = 'True'")

For Each objItem in colItems
    If objItem.DHCPEnabled = True Then
        Wscript.Echo objItem.Caption
        intReturn = objItem.EnableStatic(arrIPAddress, arrSubnetMask)
        Select Case intReturn
            Case 0
                Wscript.Echo "Static address assigned"
            Case 1
                Wscript.Echo "You must reboot before the static address will take effect"
            Case Else
                Wscript.Echo "Error occurred"
        End Select
        Wscript.Echo
    End If
Next
图 3 中的脚本几乎与图 2 中的脚本一样，只有主要的几点不同。在脚本的开头部分，我们声明了两个数组，arrIPAddress 和 arrSubnetMask，并为它们分别指定了值。之后，在 For Each 循环中，我们并非检查 DHCPEnabled 是否为 False，而是检查它是否为 True，True 表示 DHCP 已启用（反之，我们要禁用它）。然后，我们调用了适配器对象上的 EnableStatic 方法。您会注意到，与 EnableDHCP 方法不同的是，EnableStatic 带有参数。这些参数是我们此前声明的包含新的静态 IP 地址和子网掩码的数组。

Windows Vista 的新增功能
现在兑现承诺（因为脚本专家从不——至少是很少——违背诺言），我们将为您展示在 Windows Vista 中能做些什么。如前文所述，在 Windows Vista 中，WMI 的 Win32_NetworkAdapter 类有两个方法：Enable 和 Disable，使用这两个方法可以启用和禁用您的网络适配器。此类还有一个新的属性 NetEnabled，如果适配器已经启用，该值返回 True，如果未启用则返回 False。图 4 显示了一段脚本，这段脚本将查找计算机上的所有已禁用的网络适配器，然后启用它们。
Figure 4 启用网络适配器 (Close Figure 4)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'False'")

For Each objItem in colItems
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Description: " & objItem.Description
    objItem.Enable
    Wscript.Echo
Next
这与图 1 所示的脚本几乎一样。（为了引起您的重视，我们强烈建议重用脚本。）我们连接到本地计算机上的 WMI 服务，并查询 Win32_NetworkAdapter 的所有实例。由于我们仅对被禁用的适配器感兴趣，因而加入了一条 Where 子句：
Where NetEnabled = 'False'
此子句使用新的 NetEnabled 属性指出查询操作应仅返回其 NetEnabled 设置为 False 的适配器（即，被禁用的网络适配器）。然后，我们同样编写了一个 For Each 循环来遍历通过查询返回的网络适配器对象的集合。回显了适配器的 Name 和 Description 之后，我们调用 Enable 方法来启用适配器。
所有操作都十分简单，不是吗？现在，我们要是了解其他的所谓网络，那该多好啊！

Microsoft 脚本专家脚本专家为 Microsoft 工作，也就是说受雇于 Microsoft。在不玩、不教或不看棒球（以及其他活动）的时候，他们维护 TechNet 脚本中心。查找所需的信息，网址为：www.scriptingguys.com。


 Windows 的未来: Windows Server“Longhorn”中的目录服务
Windows 的未来
Windows Server“Longhorn”中的目录服务
Byron Hynes
本专栏基于 Windows Server 的一款预发布版本，其代码名为“Longhorn”。文中的所有信息可能会有所变动。

在 Windows Server 的下一个版本（代码名为“Longhorn”）中，您将看到 Active Directory 中的一系列改进。其中某些改进意义非凡，它们为获得更好的可管理性和提高效率打开了新的激动人心的大门。Active Directory 中最明显的变化之一是特性和功能的命名。一切与标识管理相关的内容现在都入帐于 Active Directory® 麾下。我们以前的 Microsoft® Windows Server® 2003 中的 Active Directory 现在变为 Active Directory Domain Services (ADDS)，此外，还有大量其他附加服务，包括 Active Directory Federation Services (ADFS)、Active Directory Lightweight Directory Services（ADLDS，以前称为 Active Directory/Application Mode，简称 ADAM）、Active Directory Certificate Services (ADCS) 以及 Active Directory Rights Management Services (ADRMS)。
其中每一项服务都代表一个服务器角色 - Windows Server“Longhorn”中的一个新增概念。您可以选择让计算机专门从事于一个服务器角色，也可以让其从事于多个服务器角色，不仅如此，您还可以使用服务器管理器（如图 1 所示）来管理服务器角色。在服务器管理器中，您可以添加角色、查找帮助以及执行其他必要的管理任务。
图 1 服务器管理器
图 1 服务器管理器
从图中可以看出，新的方式是将日常功能和特性组织成可以通过服务器管理器进行访问的多个逻辑组。

功能级别
Windows Server“Longhorn”为林和域引入了一个新的功能级别。Windows Server“Longhorn”林功能级别（发布时将重命名）并未在其自身功能的基础上添加任何新的功能，但它可以确保林中的所有域都处于 Windows Server“Longhorn”域功能级别，而这可以实现两个增强功能。第一个是使用更加可靠、详细和高效的最新分布式文件系统 (DFS) 复制引擎进行 SYSVOL 共享。第二个是增加了对使用 Kerberos 身份验证协议进行 256 位高级加密服务 (AES) 加密的支持。在迁移到 Windows Server“Longhorn”后，使用最新的功能级别可以获得最优的性能，但您仍可以继续在较低的功能级别上运行。
此外，还引入了一系列架构扩展来支持各种功能，所有这些扩展都可以与目前使用的现有架构完全兼容。运行 Windows Server“Longhorn”的域控制器可以与运行 Windows Server 2003 的域控制器和平共处和交互。

支持 Server Core
Active Directory Domain Services 是将在 Windows Server“Longhorn”的 Server Core 安装中工作的服务器角色之一。Server Core 是一个最小安装选项，它仅保留核心服务器功能，在本文将不再赘述。Server Core 不安装 Windows 外壳程序且不使用图形用户界面，从而节省了大量开销。

只读域控制器
对于某些环境而言，Windows Server“Longhorn”中 ADDS 的最重要功能当数只读域控制器 (RODC)，通过它可以轻松地部署承载有域数据库只读副本的域控制器。它最适合于以下情况：域控制器的物理安全无法得到保证；其他应用程序必须在域控制器上运行并且必须由服务器管理员（最好不是域管理组的成员）维护。这两种情况在分支机构部署中都十分常见。
只需在安装向导中启用一个复选框（如图 2 所示）即可安装只读域控制器。
图 2 安装只读域控制器
图 2 安装只读域控制器
在 Windows Server“Longhorn”版本之前，如果用户需要在其他位置的域控制器上进行身份验证，则必须通过广域网 (WAN) 链接进行通信。与局域网 (LAN) 连接相比，WAN 通常既缓慢又昂贵，且有时更容易出现服务中断。一个可能的解决方案是向远程网站或分支机构中部署 DC。而这又会带来其他问题，包括复制通信以及通过分支机构中的 DC 来维护物理安全的需要（在小型和远程分支网站中通常都十分缺乏这一点）。在某些其他情况下，分支机构在连接集线器网站时使用的网络带宽不足，增加了进行登录所需的时间量。
除了帐户密码外（除非以其他方式进行专门配置），RODC 会保留所有可写域控制器保留的 Active Directory Domain Services 对象和属性。但是，您无法对存储在 RODC 上的副本进行源自本地的更改。为此，需要在可写域控制器上进行更改，然后再将更改复制回 RODC。这样可以防止在分支位置所做的更改通过复制来污染或损坏林，从而消除了一种受到攻击的途径。
请求对域目录信息进行只读访问的本地应用程序可以直接从 RODC 获取访问权限，而请求写访问的轻型目录访问协议 (LDAP) 应用程序将收到 LDAP 参照响应。此参照响应通常会将它们定向到集线器网站中的可写域控制器。
由于不会向 RODC 写入任何更改，因此不会存在源自 RODC 的更改。与此相应，可写域控制器将不必再从 RODC 请求更改。这样便减少了集线器中桥头服务器的工作负荷以及监视复制所需的工作量。RODC 单向复制适用于 ADDS 和分布式文件系统 (DFS) 复制。RODC 执行 ADDS 和 DFS 复制更改的常规入站复制。
在域数据库中，每个安全主体都拥有一组称为凭据的密码或机密（约 10 个）。RODC 不存储用户或计算机凭据，但它自己的计算机帐户和每个 RODC 的特殊“krbtgt”帐户（用于 Kerberos 身份验证的帐户）除外。RODC 通常标榜为它的网站（通常为分支机构）的密钥发行中心 (KDC)。当 RODC 签署或加密授予票证的票证 (TGT) 请求时，它将使用另一个 krbtgt 帐户和密码，而不是可写域控制器上的 KDC。
当帐户首次尝试向 RODC 进行身份验证时，RODC 会将该请求发送到集线器网站上的可写域控制器。如果身份验证成功，RODC 还会请求适当凭据的副本。可写域控制器将识别该请求是否来自某一 RODC 并参考适用于该 RODC 的密码复制策略。
密码复制策略决定是否允许复制凭据并将其存储在 RODC 上。如果允许，将由一个可写域控制器将凭据发送给 RODC，然后 RODC 将对它们进行缓存，如提要栏“只读域控制器如何工作”中所示。
当在 RODC 上缓存凭据后，用户下次尝试登录时，只要凭据未发生更改，则将由 RODC 直接处理该请求。当使用 RODC 自己的 krbtgt 帐户 krbtgt 签署 TGT 时，RODC 会认为它已缓存了凭据的副本。如果有另一个 DC 签署了 TGT，RODC 会将请求转发给可写域控制器。
通过仅将凭据缓存功能限制给已通过 RODC 身份验证的用户，还降低了因 RODC 泄漏而暴露凭据的危险。
默认情况下，RODC 将不缓存任何用户密码，但这并不一定是最有效的方案。与域中的用户总数相比，通常仅有少数域用户需要在任意给定的 RODC 上缓存凭据。您可以使用密码复制策略来指定可以考虑进行缓存的用户组。例如，通过仅将 RODC 缓存对象限制为经常访问该分支机构的用户，或者通过禁止缓存高值凭据（例如管理员），您可以降低凭据保露的风险。
这样，一旦 RODC 被盗或以其他方式泄漏，将仅需要重置已缓存的凭据，正如我将在后面论述的，您可以准确地知道缓存了哪些帐户，如图 3 所示。
图 3 缓存的帐户信息
图 3 缓存的帐户信息

管理员角色分离
在很多分支机构中，域控制器还被赋予了其他服务器角色或分配了其他要执行的任务，例如充当文件或打印服务器。在另外一些情况下，不需要的域控制器上还安装了业务线应用程序。这会产生以下问题：为管理这些应用程序和服务器，分支机构的员工需要具有管理凭据。而可以管理一台 Windows Server 2003 域控制器的任何人员均可以管理整个域。
在 Windows Server“Longhorn”中，可以仅向管理员授予管理特定 RODC 的权限，而无需向他授予可以让他管理其他域控制器的访问权限，也不必一定要使他成为域管理安全组的成员。

用户界面和工具改进
为支持 RODC 的功能和简化密码复制的监视工作，“Active Directory 用户和计算机”中的域控制器属性页上出现了一个新增的“密码复制策略”选项卡，如图 4 所示。
图 4 “密码复制策略”选项卡
图 4 “密码复制策略”选项卡
通过单击此选项卡上的“高级”按钮，您可以查看以下内容：向 RODC 发送了哪些密码、RODC 上存储了哪些密码以及哪些帐户通过了 RODC 的身份验证，如图 5 所示。由于列表包括已通过身份验证的帐户，因此即使它们不属于可以复制其密码的组，您也可以使用该信息来确定应在密码复制策略中包括哪些组。
图 5 高级密码复制策略
图 5 高级密码复制策略
dcpromo 实用程序（通常多称为 Active Directory Domain Services 安装向导）已有悠久的历史，此版本对它进行了一系列更改。通过选择“初始配置任务 (ICT)”页（紧在安装操作系统后运行）中的“添加角色”命令，可以将该向导作为完全的图形应用程序启动。选择“添加角色”，然后选择“服务器管理器中的 ADDS”，或者从命令行或“运行”框调用 dcpromo。
当在图形模式下使用该向导时，您将注意到，元素和选项的组织更加合理，这是因为相关项目都被组合在一起。此外，它还提供了其他选项。您无需使用 /adv 开关即可通过从 UI 访问高级模式来执行新建域树、从介质安装（减少通过 WAN 进行的初始复制）或选择用于初始复制的源域控制器等类似任务。
所做的某些改进还简化了工作并减少了令人沮丧的错误。例如，如果您要使用该向导在现有域或林中创建新的域控制器，可以通过浏览找到现有的域，而无需键入 NetBIOS 名称。
向导中还新增了用于指定其他选项的页面，您可以通过这些页面将 DC 配置为目录服务器、DNS 服务器和 RODC。在该向导中，您还可以配置网站选择、设置功能级别、创建 RODC 的密码复制策略以及配置 DNS 委派。
作为一个命令行工具，dcpromo 可完全在无人参与的模式下运行。与 Windows Server 2003 中的同一工具不同的是，无人参与安装不要求响应任何用户界面提示，例如需要重新启动计算机。这样，在 Windows Server“Longhorn”的 Server Core 上使用 ADDS 变得更加容易。

ADDS 审核
Microsoft 在 Windows Server“Longhorn”中的目录服务审核方面增加了更多的功能。在 Windows Server 2003 中，您可以打开或关闭目录访问审核，但即使您的审核获得圆满成功，审核跟踪也不会包含已更改的信息。现在，它做到了。
在 Windows Server“Longhorn”中，ADDS 的审核策略具有以下四个子类别：
  • 目录服务访问
  • 目录服务更改
  • 目录服务复制
  • 详细目录服务复制
对于大多数 IT 专业人员，需要记住有关这些更改的两个重要事实：第一，目录服务访问审核提供的信息与它在 Windows Server 2003 下提供的信息基本相同，但事件 ID 从 566 更改为 4662。如果您要使用工具来分析安全事件日志，请记住此项更改。第二，目录服务更改这一新增类别会同时记录已更改属性的原值和当前值。
要在 ADDS 中实现审核，应使用全局审核策略、系统访问控制列表 (SACL) 以及 ADDS 架构。这些组件协同工作，旨在为您提供灵活而全面的审核框架。
全局审核策略控制是否在 ADDS 中执行任何审核。如果启用了审核，则全局策略将控制要审核四个访问子类别（前面已列出）中的哪个子类别。全局审核策略通常应用于默认域控制器组策略对象中，因此它适用于域控制器上的整个目录。
虽然组策略工具可以打开或关闭组审核策略，但您必须使用 Auditpol.exe 命令行工具才能查看或配置这些子类别。图形用户界面中并不会显示这些子类别。
SACL 是对象安全描述符的一部分。通过指定 SACL 中的项，您可向系统指示两个信息：您关心的操作和用户（或安全主体）。换句话说，您将指定事件日志中应记录执行哪些操作的哪些用户。因此，如果您要记录由域管理员而不是用户本身对 User 对象所做的更改，则可以使用 SACL 进行控制。SACL 将应用于对象（可以为新对象定义 SACL，也可以从容器对象继承 SACL）。
您还可以配置 ADDS 架构，以使其将更改审核对象限制为特定的属性。由于 SACL 在默认情况下应用于对象，因此会记录对任何属性的访问或更改。这会生成大量的日志记录活动，但可能并非所有属性都是您所关心的。因此，您可以在属性级别设置标志来防止记录对该属性所做的更改。
SearchFlags 属性是在定义属性的类中定义的，因此它是属性的属性。此外，它还是一个位掩码，其中值为一字节的每个位都代表一个不同的开/关设置。如果您将它视为属性 (Attribute) 的属性 (Property)，则可能更容易理解。在 Windows Server 2003 中，有七个这样的值用于控制各个设置，包括属性的索引和 GC 复制。在 Windows Server“Longhorn”中，第八个位（值为 128）用于控制是否记录更改。如果未设置此位，则当对该属性进行了修改时，ADDS 将不会记录更改事件。这适用于包含该属性的所有对象。在 Beta 2 中，您不能使用图形用户界面设置第八个位。
在 Windows Server“Longhorn”中，默认情况下全局审核策略处于启用状态，并且“目录服务更改”设置为记录成功的更改。

可重新启动的 ADDS
在 Windows Server“Longhorn”中，ADDS 是一项可重新启动的服务。这只意味着，可以在不重新启动域控制器的情况下停止和启动 ADDS 服务。它允许管理员更加轻松地执行无法在服务运行时执行的功能（例如对数据库执行脱机碎片整理），而无需进入目录服务还原模式。
运行 Windows Server“Longhorn”的域控制器有三种可能的状态：ADDS 已启动、ADDS 已停止和目录服务还原模式。下面让我们来探讨每一种状态。
ADDS 已启动 ：域控制正在正常运行。
ADDS 已停止 ：服务器既具有目录服务还原模式下的域控制器的特性，也具有加入域的成员服务器的特性。
在目录服务还原模式下，ADDS 数据库 (Ntds.dit) 处于脱机状态。如果无法联系到其他域控制器进行登录，则可以使用目录服务还原模式进行本地登录。
对于成员服务器，服务器与域相连接。用户可以用交互方式登录，也可以使用其他域控制器通过网络进行域登录。但是，域控制器不应长时间保持此状态，因为它无法使用其他域控制器处理登录请求或进行复制。
目录服务还原模式 ：与 Windows Server 2003 相比，此模式（或状态）未发生变化。
图 6 中的流程图显示了运行 Windows Server“Longhorn”的域控制器如何在这三种可能的状态之间进行过渡。
图 6 Windows Server“Longhorn”上的域控制器在三种状态之间进行过渡
图 6 Windows Server“Longhorn”上的域控制器在三种状态之间进行过渡

还想知道其他信息？
要在这样一篇短小的文章中深入介绍 Windows Server“Longhorn”中新增的 ADDS 功能简直是天方夜谭。但正如您所看到的，新增的 Active Directory 功能将解决您以前曾试图克服或只能任其肆虐的一系列问题。如果您要了解更多信息，请不要担心，随着此产品最终版本发布日期的到来，我们将发布更多的相关文档。而目前在测试阶段查找更新的最好的地方则是 Windows Server“Longhorn”网站。

Byron Hynes任职于 Microsoft 的 Windows Server 用户协助组。之前，他曾担任过顾问和培训师并拥有十分丰富的工作经验，包括运营区域 Internet 主干网、对客户端应用程序、服务器应用程序和启用 Web 的应用程序进行故障排除以及设计数据库架构、网络基础结构和安全模型。您可以发送邮件到 bhynes@microsoft.com，与他联系。


 安全观察: 我刚获得一份安全公告。我该怎么做呢？
安全观察
我刚获得一份安全公告。我该怎么做呢？
Christopher Budd

应客户的要求，Microsoft 于 2003 年 10 月建立了每月安全公告发布过程。客户的主要要求之一是提高安全公告发布计划的可预测性。我们现在已经能够利用这种规律性和可预测性改进和优化我们的这些过程。
Microsoft 安全公告网站是供您查找最新安全公告和搜索以前的公告的工具，如图 1 所示。例如，图 2 显示的是 2006 年 8 月的公告。
图 1 Microsoft 安全公告网站
图 1 Microsoft 安全公告网站
对于很多客户而言，Microsoft 每月安全公告已帮助形成了更加成熟的 Microsoft 安全更新部署过程。客户利用在可预测的日期发布安全公告的这种机会建立起了自己定期处理这些公告的过程。这些客户在自己的安全更新评估和部署过程中已建立起与可预测的 Microsoft 每月安全公告发布时间线一致的时间线和步骤。客户通过使用该过程来系统地分析、测试和部署更新，不仅改善了整体的安全形式，还减少了停机时间和中断次数。
图 2 2006 年 8 月安全公告
图 2 2006 年 8 月安全公告
但是，某些客户在进行安全更新评估和部署时并未采用规定的过程。虽然不系统的部署更新不会产生任何问题，但它从根本上与我们所认为的最佳安全更新管理方法是相左的。
虽然我们提供了有关公告的发布方式和发布时间的有用信息，但我们并未进一步提供指导您应如何处理这些公告以及如何将它们集成到自己的过程中的指南。部分客户可能并不知道可以使之受益的过程，或者不知道构建这些过程的最佳方法。
因此，我将在本专栏中简要介绍我们为您推荐的用于对安全更新进行评估和部署的步骤和过程。任何规模的组织都可以遵循这些步骤。对于某些较大型的组织，最好基于组织的内部结构将这些步骤划分为不同的组。对于较小的组织，可以由一个组甚至是一个人来执行所有这些步骤。无论职责分工如何，都应在评估和部署过程中明确说明这些步骤。图 3 提供了这一过程的概览。
图 3 安全公告评估和部署过程
图 3 安全公告评估和部署过程

1. 接收高级通知
在您的每月安全公告过程中，第一步应确保您能收到有关即将发布的安全更新的高级通知。Microsoft 会在每月标准发布（即每个月的第二个星期二）之前的三个工作日的太平洋时间 (GST -8) 上午 10 点左右在它的网站上发布信息；因此，高级通知信息将在该日期的上一个星期四发布。
高级通知的目的是在实际发布之前提供相关信息，帮助用户制订部署计划。出于保护客户的需要，通知中所包含信息的详细程度有所权衡，在安全更新发布之前不会泄露任何可能导致客户受到攻击的信息。高级通知按产品名称（不包括具体版本，例如，Microsoft® Windows® 或 Microsoft Office）来组织有关即将发布的更新信息。其中每个条目都会详细说明以下内容：将为该产品发布多少公告、这些公告的最高严重程度、是否有需要重新启动计算机的更新以及哪些检测工具适用于这些公告。
为确保不让用户感到突然和尽可能消除困惑，高级通知还提供有关将在同一日期发布但与安全公告没有任何关联的其他更新的信息。具体来讲，它会详细介绍以下信息：将通过 Microsoft Update (MU) 和 Windows Update (WU) 发布多少高优先级的非安全更新以及 Microsoft Windows Malicious Software Removal Tool 是否有任何更新。
最后，我们将提供与任何可能导致部署延迟的问题有关的信息，正如我们在 MS06-019 中更改“代理发送”权限时那样。
每个月都会发布新的高级通知，届时将通过 Security Notification Service Comprehensive Edition (SNSCE) 发送通知。您可以注册使用 SNSCE。

2. 评估潜在的影响
在收到高级通知后，第一步应是评估即将发布的版本在您的环境中的相关性。尽管高级通知仅包含有限的详细信息来介绍受影响的产品，但它提供的信息足以用来评估即将发布的公告是否与您的环境相关。
例如，假设高级通知介绍了两个具有最高严重程度级别（重要）并需要重新启动计算机的 Microsoft Exchange 公告。如果您没有运行 Exchange，便会立即知道这些公告不适合用于您的环境。与之相反，如果您运行有 Exchange Server 2003，您将知道到星期二最多可能会有两个级别为“重要”且需要重启计算机的公告。
为了进行计划，请记得使用高级通知，此工具可帮助您确定在以下方面对组织的最大影响：公告的数目、公告的严重程度及其在重新启动方面对部署的影响。在评估了更新的相关性和可能的最大影响后，您可以制订一份计划，其中应包括以下操作项：
  • 进行风险评估、测试和部署的人员
  • 测试计划和测试试验时间
  • 部署计划和计划的重新启动（如果适当）
此时的所有计划都应是暂定的，因为高级通知中的信息还可能发生变化。另外，由于高级通知中信息的有限性，您可以在建立全部细节后再进行更改。
最后，如果存在任何其他信息（例如功能变化），则应利用高级通知和实际安全公告发布之间的时间来调研该问题并评估它可能对您的环境所造成的影响。您可能需要基于调研对暂定的计划进行修订。

3. 接收新的 Microsoft 安全公告
在每月的第二个星期二，Microsoft 将发布其安全公告。太平洋时间上午 10 点是发布时间，但是，由于该发布属于一个庞大而复杂且相互关联的过程，因此它可能会因各种原因而延迟。在此发布中，Microsoft 网站上将发布以下内容：安全公告、安全更新、检测和部署工具（例如 Microsoft Baseline Security Analyzer (MBSA) 和 Windows Server® Update Services (WSUS)）的更新以及新的检测工具（例如新版本的企业扫描工具 (EST)）等。
Microsoft 安全公告页已支持 RSS 源。当安全公告中包含更新时，我们的 RSS 源也会随之更新，而这又会更新 RSS 聚合器和查看器。此外，还将使用安全通知服务 (SNS) 和 SNSCE 发送通知。通知将通过电子邮件和 MSN® Alerts 发送。
要了解有关新安全公告的可用性的信息，必须注册开通我们提供的所有通知方式。您可以订阅 RSS 源以获得 SNS 和 SNSCE。

4. 评估安全公告的相关性
在审查新的安全公告并评估其与您的环境之间的相关性时，职责分配必须明确。在此评估过程中，您可以根据需要利用安全公告中完备的特定信息来对您暂定的计划进行修订和调整。回到前面的示例，如果您向 Exchange 管理小组通知了可能的重大安全更新，但发现 Exchange Server 并不受到影响，则可以调整对这些资源的计划。
在评估了安全公告与您的组织之间的相关性时，可以继续处理与您的过程相关的安全公告。

5. 执行风险评估并对公告评级
此时，您需要对相关公告进行风险评估。在权责分工明确的组织中，此步骤通常由安全组来执行。虽然每个 Microsoft 安全公告都包含一个最大严重程度级别，但该级别反映的是在所有受影响的产品中所有漏洞的最高严重程度。适用于您的组织的 Microsoft 严重程度级别可能不同于列出的最大严重程度级别，这取决于该问题对环境中所使用版本的影响的严重程度。请务必查看安全公告“概要”部分下完整的“安全评级和漏洞说明”表，并获取有关您的具体版本的具体漏洞信息。
之后，应查看其他技术信息（例如“缓和因素”）以及针对每个漏洞的常见问题中的技术详情，接着基于您的环境和策略对风险评估进行调整。您的策略可能还规定评估须说明非技术的环境因素，例如出现威胁的环境或特定应用程序对组织的关键程度。
在此过程的最后，应对每个公告及其关联的更新进行风险评级。继续使用前面的示例，Exchange 管理组可以基于安全公告中详细介绍的更改信息将安全更新评级为“中等风险”。您应当根据您的策略，对计划进行适当的更新和更改。例如，您的策略可能规定，对中等风险更新的测试时间需要比低风险更新的测试时间长一到两天。
在某些情况下，您的策略可能还规定，对于具有一定风险级别的公告，还需要考虑实施替代方法。例如，您组织的策略可能规定，对于评级为重要的所有安全更新，应尽快审查并部署替代方法。在此情况下，需要对替代方法执行额外的风险评估，以确定要实施的操作以及实施时间。
在此过程的最后，应列出要在环境中部署的更新以及与每项更新关联的风险评级。此外，还应列出要实施的替代方法，并使用它们更新您的测试和部署计划。对计划所做的更改应反映策略所指定的时间线。例如，您的策略可能规定，对于所有重要安全更新，必须在 24 小时内部署替代方法并在 7 个日历日内部署更新。

6. 确定安全更新和/或替代方法对组织的可能影响
了解安全更新或替代方法对组织的影响是评估过程中的一个关键步骤。在权责分工明确的组织中，此步骤通常由负责管理受安全更新或替代方法直接影响的系统的组来执行。
了解可能产生的影响有助于您了解并确定由安全更新或替代方法本身所带来的风险。有关信息，请参阅安全公告中的“与此安全更新相关的常见问题 (FAQ)”部分。有关安全更新如何消除漏洞的信息，请参阅“漏洞详细信息”下的“漏洞常见问题”。
此步骤的目的是确定更新和替代方法的风险评级。继续使用前面的示例，Exchange 管理组可以基于安全公告中详细介绍的更改信息将安全更新评级为“中等风险”。您应当根据您的策略对计划进行适当的修订。例如，您的策略可能规定，对“中等风险”更新的测试时间需要比“低风险”更新的测试时间多一天。
您可能还需要基于风险评级对计划的影响来重新审查有关部署替代方法的决策。例如，您可能发现需要将测试时间延长两天，但这会使系统失去保护的时间大于策略所允许的时间。在此情况下，需要重新审查替代方法的部署以便符合策略。
最后，应使用此步骤中的信息继续下一步工作 – 制订更新的测试计划。

7. 定义测试计划
为提高效率，测试必须系统地进行并且必须利用有意义的计划进行构建。测试应针对最可能显现环境问题的方面进行。由于每个环境都是不同的，因此我们无法提供一个标准模板来制订有效的测试计划。
对于权责分工明确的组织，测试计划通常由多个组进行设计。负责管理受安全更新或替代方法直接影响的技术或系统的组应能够提供特定的专业知识。而测试组应能够提供有关构建测试案例和测试工具选项的专业知识及其对实际时间线的理解。
在此阶段中，应注意测试计划如何影响您对安全更新或替代方法的风险评级以及它如何相应地更改您的测试和部署计划。例如，如果您确定无法制订一项测试计划来完全按照自己的意愿测试更新，就可以增加其风险评级、选择延迟部署或临时实施替代方法。

8. 制订部署计划
部署是实际实施安全更新或替代方法所提供的保护的过程。由于部署是实现这一过程的真正最终目标，因此了解可用的部署方法并将它们包括在评估之中与安全风险评估一样重要。在权责分工明确的组织中，确定可行的安全更新部署方法这一任务通常由负责管理软件更新的基础结构的组（例如，维护 Systems Management Server (SMS) 的组）来执行。监督配置管理技术（例如 Active Directory）的组可以参与确定可行的替代部署方法的决策过程。
在此步骤中，您的目标是了解可行的部署方法并根据这些方法构建一个要用于部署安全更新或替代方法的计划。此步骤中需要了解的一个重要问题是，可行的部署方法如何影响您的计划以及如何进行一些必要的更改。例如，如果 WSUS 不支持某安全更新，但它又是您的主要部署方法，则可以决定更新部署比原计划延长两天。进而可以确定实施替代方法，以便在此部署期间内提供必要的保护。
有关部署方法的信息，请参阅安全公告的“与此安全更新相关的常见问题”部分。有关实施替代方法的方式的信息与每个替代方法列在一起；每个替代方法都与各自的漏洞相关联。
设计阶段到此结束。此时，您应有一个与安全更新、替代方法、测试和部署的安全风险和风险评级有关的、反映所有评估要素的时间表和计划。从所有这些阶段中可以看出，它们错综复杂地交织在一起，因而并不一定是线性相关的。这些阶段在某些组织中同时发生，而在另外一些组织中则是顺序进行的。您应基于组织的策略、需求和资源来决定这些步骤的实施方式。对于这些步骤，最重要的事项并不是特定的结构和顺序，而是应确保这些不同的步骤能够相互交流。任何实施方式的关键都是要保持灵活性和适应性。

9. 测试更新和替代方法
在测试阶段，您将按照前面在测试环境中制订的测试计划对安全更新和替代方法进行测试。测试环境的用途是重现生产环境的重要元素。在对安全更新和替代方法进行测试的过程中，要在部署到运行环境之前努力查找任何可能出现的问题。
当在测试过程中发现出问题后，您应确定问题的严重程度以及解决问题所需要的步骤。您可能会发现影响处于可接受范围内的微小问题，但也可能发现需要在部署更新之前解决的其他问题。如果您选择接受该问题，则应将其备案，以供支持人员参考。
若要解决该问题，您可以通过 Microsoft 产品支持服务 (PSS) 新开一个案例，该服务为与安全更新相关的问题提供免费支持。有关如何联系 PSS 的信息，请访问 support.microsoft.com/security。由于解决问题会增加测试时间，进而会使部署延后，因此在选择解决问题之前，应考虑这一决策对计划的潜在影响。
在测试完成后（所有问题都已解决或备案），便可以确定在运行环境中部署安全更新还是替代方法了。

10. 部署更新和替代方法
在安全更新或替代方法通过测试后，接下来便可以进入部署过程了。在部署期间，应使用计划来指导您实际地对系统应用安全更新并进行配置更改。通常由参与制订该计划的组来负责执行实际的部署过程。
如果您在部署期间遇到问题（例如，安全更新无法通过您的更新管理基础结构正常安装），则需要仔细检查该问题。如果该问题造成延迟，则可能需要重新检查选项/或考虑使用替代方法来保护系统。
在理想状态下，测试过程将在部署之前识别所有可能在运行期间发生的问题。但是，如果您在将更新部署到运行环境中后遇到了问题，则应按照您在测试中遇到问题时那样执行相同的步骤。评估该问题，然后决定是要接受问题，还是要解决问题。
如果安全更新应用成功，则说明保护机制已就绪，从而实现了这些过程的最终目标。但是，如果安全更新未能成功应用，则说明您的系统依然存在漏洞。
由于某些系统可能无法成功更新，因此部署过程的最后一步非常重要 – 审核系统，确认是否已成功部署。在某些组织中，审核将由与安全团队相关的单独审核组来执行。可以使用 WSUS、MBSA 和 SMS 等 Microsoft 工具来审核安全更新的应用是否成功。另外，在安全公告的“安全更新信息”部分中还提供了相关信息来说明如何验证安全更新的应用是否成功。

总结
借助于 Microsoft 的每月安全公告发布，您可以实施更加有规律的计划和过程来管理安全更新。建立有规律的步骤和过程不仅有助于更好地保护系统，同时还可以在最大程度上减少中断次数和可能的停机时间。
虽然每个组织都应建立自己独特的安全更新管理过程，但您的组织的过程应包括本专栏推荐的步骤。您无需设立单独的安全和更新团队，但应当执行安全风险评估并制订部署计划。
这里的重要的一点是，计划至关重要。通过制订良好的计划，可以更加顺利地完成涉及实际活动的各个步骤（例如测试和部署阶段），而这又会为安全更新过程的成功完成扫清障碍。

Christopher Budd是 Microsoft 安全响应中心 (MSRC) 的一位负责安全的项目经理。专门负责与 IT 和安全专业人员及其他软件用户进行技术交流。


 Microsoft.com 技术内幕: ASP.NET 的管理与委派
Microsoft.com 技术内幕
ASP.NET 的管理与委派
Jeff Toews

Microsoft.com Web 基础结构几乎完全在 .NET Framework 2.0 上运行。Microsoft.com 运营小组的主要 Web 管理难题之一是如何妥善地配置 ASP.NET，在不断优化设置的尝试过程中，我们也学到了很多知识。若要
获得适当的配置设置，不仅需要熟悉 web.config 和 machine.config 文件中的各个配置节，还需要理解这些设置的含义。要掌握这些设置及其含义，研读示例是一种不错的方式。在本专栏中，我将介绍一些配置技巧，这些技巧是在配置运行有 Microsoft.com 服务器的过程中获得的，希望您能够从我们的经验中获益。

1. 适当设置编译开关
当在实际运行环境中部署基于 ASP.NET 的应用程序时，必须确保任何人都不能将任何应用程序的 web.config 文件中的编译调试属性设置为 True（无论是意外的还是特意的），即不能出现如下设置：
<compilation debug="true" />
在要管理很多 Web 应用程序的繁忙环境中，需要使用 ASP.NET 配置控制机制来防止发生这一情况。（我将对此再进行一些详细说明）。
此外，还必须确保不将单个 .aspx 中的页面专用的调试属性设置为 True，即不能出现如下设置：
<%@ Page debug="true" %>
同样，在需要发布大量内容的繁忙环境中，期望能够确保在发布 .aspx 页之前将所有这些页中的这一设置删除通常是不现实的。您需要一种全局的方法来防止发生此情况。
使用此设置来编译 Web 应用程序将导致调试二进制文件而不是发布二进制文件。而且，您的代码将不进行优化，最终将导致性能降低。此外，由于调试设置会阻止超时，因此 ASP.NET 请求将不会超时。在实际运行环境中使用调试版本无异于向黑客敞开大门！
幸运的是，Microsoft® .NET Framework 2.0 为 machine.config 提供了一个新的部署设置，该设置会指示 ASP.NET 禁用以下内容：调试功能、跟踪输出以及显示 ASP.NET 错误消息（包括在本机和远程计算机上），无论 web.config 文件或特定页属性的指令如何，均禁用这些内容。该设置形如：
<configuration>
    <system.web>
          <deployment retail="true"/>
    </system.web>
</configuration>
请注意，后两项优点（即禁用跟踪输出和远程禁用详细的 ASP.NET 错误消息）都是有关安全性的最佳做法，确实应予以采用。如果未采用这两项做法，则会向全世界暴露应用程序的内部工作机制，容易被人利用。
在这个问题上，还有另外一个重要事实：锁定 <location allowOverride="false"> 的根 web.config 文件中的 <system.web><compilation> 调试属性或使用 lockItems 属性会阻止应用程序配置层次结构中层次较低的 web.config 文件启用调试设置。但它不会阻止各个 .aspx 页在其页属性中启用调试模式。部署发布开关是在所有级别上完全禁用 ASP.NET 调试功能的唯一方式。
将部署发布开关设置为 True 可能是最佳做法，任何拥有正式运行的服务器的公司都应该遵循，以便确保应用程序始终以最优性能运行，且不会出现安全信息泄漏。如上所述，此开关是 ASP.NET 2.0 中新推出的；它是用户对 ASP.NET 工作组提供反馈的直接结果。
与之相反，在面向内部的预运行环境中，开发人员需要调试其 Web 应用程序，因此请勿使用部署发布设置。您只需在预运行的根 web.config 文件中设置 <compilation debug="false">，并允许此值可由各个应用程序的 web.config 文件或 .aspx 页属性替代即可。

2. 在 ASP.NET 2.0 中使用中等信任
如果您在将网站或应用程序迁移到 ASP.NET 2.0 之后仍然使用“完全”或“高”信任级别（很多 Microsoft.com 上的网站都是如此），现在请尝试将信任级别设置为中等信任，看看可能会出现什么情况。 例如，受限 WebPermission 会将应用程序的通信目标仅限于您在 <trust> 元素中定义的一个地址或一个地址范围。这样，您便可以控制和维护能够远程访问的许可外部网站和地址范围的列表。这是一个在安全性方面的重大改进。
FileIOPermission 也会受到限制。这意味着，应用程序的代码只能访问其虚拟目录层次结构中的文件。在中等信任下，默认情况是每个应用程序都被仅授予对其虚拟目录层次结构拥有 Read（读）、Write（写）、Append（追加）和 PathDiscovery（路径探寻）权限。这样便禁止了随机的文件 I/O 访问，而这在承载了大量应用程序的共享 Web 环境中则是非常重要的。
另一个优点是去掉了非托管代码特权。这意味着，您可以禁用原来的组件，它是迄今为止我们找到的禁用 Aspcompat 页属性的最简便的方法。（将 Aspcompat 设置为 True 可导致页性能下降）。
通过 ASP.NET 2.0 下的中等信任，管理员可以为每个以前的默认限制创建自定义的例外项，因此可获得极大的灵活性。而此灵活性是 ASP.NET 1.1 所不具备的。在 ASP.NET 2.0 中运行中等信任比在 ASP.NET 1.1 中运行中等信任更容易的另一个原因是，您可以访问 Microsoft SQL Server™ 数据库。
因此，如果您在同一台服务器上承载了多个应用程序，则可以使用代码访问安全性和中等信任级别来实现应用程序隔离。通过在根 web.config 文件中设置并锁定该信任级别（使用 <location allowOverride="false"> 标记），可以为服务器上的所有 Web 应用程序都建立安全策略。通过设置 allowOverride="false"（如图 1 所示），单个开发人员便无法在其应用程序的 web.config 文件中替代中等信任策略设置。
Figure 1 信任设置 (Close Figure 1)
<configuration>
    <location allowOverride="false">
        <system.web>
            <securityPolicy>
                <trustLevel name="Full" policyFile="internal" />
                <trustLevel name="High" policyFile="web_hightrust.config" />
                <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
                <trustLevel name="Low"  policyFile="web_lowtrust.config" />
                <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
            </securityPolicy>
            <trust level="Medium" originUrl="" />
        </system.web>
    </location>
</configuration>
有关如何在 ASP.NET 2.0 中使用中等信任的详细信息，请参阅以下文章：“如何：在 ASP.NET 2.0 中使用中等信任”。

3. 限制下载指定的文件类型
服务器上无疑有一些类型的文件是您不想让其落入他手的。幸运的是，ASP.NET 的默认配置可截获并停止对 ASP.NET 应用程序中使用的多种文件的请求。这些文件类型包括存储应用程序源代码的 .config 文件和 .cs 文件。ASP.NET 可将这两个文件类型与 System.Web.HttpForbiddenHandler 关联起来，以此来确保这些文件不被公开。调用该处理程序会向请求文件的用户返回错误。实际上，您可以使用此方法来限制任何文件类型。
例如，在 Microsoft.com 网站上，通过向根 web.config 文件的 <system.web><httpHandlers> 一节添加以下项可以禁止 .asmx 文件类型：
<add path="*.asmx" verb="*" type=
    "System.Web.HttpForbiddenHandler" />
从中可以看出，您可以使用 <httpHandlers> 元素中的 <add> 子标记来指定要禁止的其他文件类型。将谓词属性设置为“*”。执行此操作时，需要指定阻止所有类型的对该文件类型的 HTTP 请求。将路径属性定义为与要阻止的文件类型匹配的通配符。例如，可以指定“*.mdb”。最后，将类型属性设置为“System.Web.HttpForbiddenHandler”。

4. 在添加程序集引用时应谨慎
每个运行 .NET Framework 的 Web 服务器都有一个计算机范围的代码缓存，称为全局程序集缓存 (GAC)。GAC 存储专门指定给计算机上的多个应用程序共享的程序集。如果有多个不同的应用程序需要引用程序集，则可以将这些程序集添加到 GAC 中，即使 Web 服务器上的大多数网站都不访问它们。这样不会造成大量的性能/资源损失，却具有可进行集中的版本控制的优点，而不是让程序集散布在服务器中单个应用程序的 /bin 文件夹中。
不过，判断应在何时将程序集引用添加到根 web.config 的条件必须比判断在何时将应用程序置于 GAC 中的条件更加严格。对于不是真正全局的组件来说，让各个应用程序将程序集引用添加到它们的应用程序 web.config 文件中比在根 web.config 文件中声明这些程序集具有高得多的性能。前者可以大大减少 Web 服务器上所有不使用这些程序集的应用程序的页加载时间，因为编译器不需要再花费时间来加载不需要的程序集。ASP.NET 编译器不为应用程序加载程序集只是因为程序集驻留在 GAC 中；它只会在其 appdomain 或较大的应用程序范围中存在程序集引用时才会加载该程序集。因此，在 Microsoft.com 上，我们允许应用程序开发人员对所有 Microsoft.com 环境替代其应用程序的 web.config 文件中的 <configuration><system.web><compilation><assemblies> 元素。
具体来说，在 Microsoft.com 运行环境和临时环境的根 web.config 文件中，<system.web><compilation> 节点的所有属性（包括 debug、explicit、defaultLanguage）及其所有元素（buildProviders、expressionBuilders 等）都将锁定，但 <assemblies> 元素除外：
<compilation debug="false"
    explicit="true" defaultLanguage="vb"
    numRecompilesBeforeAppRestart="500"
    lockAttributes="*" lockAllElementsExcept=
        "assemblies" >
在面向内部的预运行环境中，根 web.config 文件的 <system.web><compilation> 一节是锁定的，但我们允许应用程序发布者在特殊情况下替代 <assemblies> 元素以及 debug="false"（用于启用故障排除/调试）：
<compilation debug="false" explicit="true"
    defaultLanguage="vb"
    numRecompilesBeforeAppRestart="500"
    lockAllAttributesExcept="debug"
    lockAllElementsExcept="assemblies" >
请注意此处使用的锁定属性，它们是 ASP.NET 2.0 中新增的。有关这些属性及其用法示例的详细信息，请参阅“节元素继承的常规属性”。

5. 删除手动设置的 MaxConnection 值
几乎所有 Microsoft.com 网站都有调用远程 Web 服务群集的 ASP.NET 应用程序。可以从单个 Web 服务器执行的最大并行远程 Web 服务器调用数由 machine.config 文件中 <connectionManagement> 元素的 maxConnection 属性决定。在 ASP.NET 1.1 中，maxConnection 的默认值设置为 2。对于像 Microsoft.com 这样有数百个不同应用程序调用远程 Web 服务的网站来说，这一旧的 maxConnection 默认值实在是过于缓慢。结果是 ASP.NET 请求将排队并等待远程 Web 服务调用的完成。（您可以通过 Perfmon 计数器“ASP.NET\排队的请求”来查看排队的 ASP.NET 请求数）。为了能够同时执行更多的远程 Web 服务调用（从而提高网站上应用程序的性能），我们将拥有四个处理器的 Web 服务器的 maxConnection 值增加到了 40（通常建议将 maxConnection 的值设置为 CPU 数的 12 倍，但您可以调整此值以满足您的特定需求）。
但是，在 ASP.NET 2.0 中，您不再需要手动配置 maxConnection，因为它现在是自动调整和设置的。这都要归因于 machine.config 中 processModel 标记的新增配置节。有关 processModel 元素的详细信息，请参阅“processModel 元素（ASP.NET 设置架构）”。
<system.web>
    <processModel autoConfig="true" />
</system.web>
通过在 machine.config 中启用 autoConfig（此为默认设置），ASP.NET 可将 maxConnection 参数的值设置为 12n（其中 n 是 CPU 的数目）。启用 autoConfig 还将导致以下情况：maxWorkerThreads 参数和 maxIoThreads 参数设置为 100，minFreeThreads 参数设置为 88n，minLocalRequestFreeThreads 参数设置为 76n，minWorkerThreads 设置为 50。
在利用 ASP.NET 2.0 中的 autoConfig 自动调整和设置 maxConnection 及列表中的其他属性之前，应确保删除任何手动为这些参数设置的值，否则将使用这些值代替自动配置值。在从 ASP.NET 1.1（需要显式设置 maxConnection）迁移到 ASP.NET 2.0（存在该属性的默认值）时，应牢记这一点。
此外，maxConnection 以及前面列出的其他属性的 autoConfig 值是任意给定的，它们并不绝对适用于每一种情况，但我发现，这些限制几乎适用于所有的 Microsoft.com 应用程序。
如果您决定需要手动调整 maxConnection 值，请在增加其值时务必小心，因为该操作会导致 CPU 利用率提高。这种利用率的提高的情况是由以下事实导致的：ASP.NET 可以处理更多的传入请求，而不是让它们等待轮到自己调用 Web 服务。当然，还应记住 maxConnection 属性不影响本地 Web 服务调用，它只影响远程调用。

6. 注意未处理的异常
在将 ASP.NET 1.1 网站或应用程序导入 ASP.NET 2.0 时，应注意未处理异常的默认策略的主要变化，这一点极其有用。在 .NET Framework 1.1 和 1.0 中，托管线程上的未处理异常会被忽略，并且由于应用程序继续运行，这些异常通常处于隐藏状态。除非您附加调试器来捕获异常，否则不会意识到有任何错误发生。不过，在 ASP.NET 2.0 下，当引发未处理的异常时，基于 ASP.NET 的应用程序将意外退出。如果旧的默认异常处理策略以前掩盖了许多未处理的异常，则会严重影响网站或应用程序的可用性。
解决此问题的最佳方式是执行全面测试并消除未处理的异常（应用程序中确实不应出现这些未处理的异常）。但是，当要迁移的应用程序非常大，可能难以确定发生异常的位置，或者当要迁移大量的旧式应用程序而无法进行全面的单项测试时，还有几种方案可选。在将 Microsoft.com 网站迁移到 ASP.NET 2.0 时，我们将未处理的异常策略更改回 ASP.NET 1.1 和 ASP.NET 1.0 中的默认行为。
要启用此旧式默认异常处理行为，请将以下代码添加到 aspnet.config 文件中：
<configuration>
    <runtime>
        <legacyUnhandledExceptionPolicy
            enabled="true" />
    </runtime>
</configuration>
此代码位于以下两个文件夹中：
%WINDIR%\Microsoft.NET\Framework\v2.0.50727（在 x86 或 SYSWOW64 系统上）和 %WINDIR%\Microsoft.NET\Framework64\v2.0.50727（在 x64 系统上）。
此更改将从根本上将 .NET Framework 还原为旧的 1.1 和 1.0 行为。在使用此短期修复方法时应三思后行，因为它终究是掩盖了应用程序中存在的问题，它们确实是一些 Bug。不过，要避免因意外终止工作进程而导致的可用性问题，它不失为一种极其简便的方法。有关这种更改行为的详细信息，请参阅“在 .NET Framework 2.0 中未处理的异常会导致基于 ASP.NET 的应用程序意外退出”。

7. 确保代理服务器配置得当
Web 服务器管理员可以通过配置 machine.config 文件中的 <configuration><system.net><defaultProxy> 元素来指定使用代理服务器向 Internet 发送 HTTP 请求。
在 Microsoft.com 运行环境中，我们将 <defaultProxy> 值配置为使用系统默认代理（在未安装防火墙客户端时）并使用 <location allowOverride="false"> 标记来防止 <defaultProxy> 元素被应用程序开发人员替代（他们可能意外发布设置了内部代理服务器的 web.config 文件）：
<configuration>
    <location allowOverride="false">
       <system.net>
          <defaultProxy>
              <proxy usesystemdefault="true" />
          </defaultProxy>
       </system.net>
    </location>
</configuration>
在 Microsoft.com 内部预运行和临时环境中，我们将 usesystemdefault 属性设置为 False，将 bypassonlocal 设置为 True 并添加一个代理 bypasslist（参见图 2）。bypasslist 列出了表示不使用指定代理的地址的正则表达式。同样，此节包含在 <location allowOverride="false"> 标记中，旨在防止开发人员在其 web.config 文件中指定自己的代理服务器。（这些代理服务器通常是内部服务器，如果将页面发布到运行环境中，则对这些服务器的调用将中断。）任何在预运行或临时环境中指定代理服务器的尝试都将导致在运行时出现 ASP.NET 错误，这将强制开发人员在发布到运行环境之前删除此配置。
Figure 2 设置 Bypasslist (Close Figure 2)
<configuration>
    <location allowOverride="false">
        <system.net>
             <defaultProxy>
                <proxy
usesystemdefault="false"
proxyaddress = "http://proxy.server.foo.com:80"
bypassonlocal = "true" />

                <bypasslist>
<add address="10\.*"/>
<add address="dns\.foo\.com" />
<add address="name1\.name2\.foo\.com" />
                </bypasslist>
            </defaultProxy>
        </system.net>
    </location>
</configuration>

8. 请勿向任何人显示自定义错误
我前面提到，不应允许运行环境中的 Web 服务器从远程返回详细的 ASP.NET 错误消息。
在 Microsoft.com 运行环境和临时环境的根 web.config 文件中，应将 <configuration><system.web><customErrors> 模式属性设置为 RemoteOnly，以便向远程客户端显示自定义错误，而向本机显示 ASP.NET 错误（从而允许 Web 服务器管理员进行故障排除）。请注意，<customErrors> 元素包含在 allowOverride="false" 的 <location> 标签中（参见图 3）。这是为了防止各个应用程序所有者意外（或有意）设置 mode="Off" 并将详细的 ASP.NET 错误消息散布到 Internet。
Figure 3 禁止显示错误消息 (Close Figure 3)
&lt;configuration&gt;
    &lt;location allowOverride=&quot;false&quot;&gt;
        &lt;system.web&gt;
            &lt;customErrors mode=&quot;RemoteOnly&quot; defaultRedirect=
                   &quot;/errorpages/generic_customerror.aspx&quot;&gt;
                &lt;error statusCode=&quot;404&quot; redirect=&quot;/errorpages/filenotfound_customerror.aspx&quot; /&gt;
            &lt;/customErrors&gt;
        &lt;/system.web&gt;
    &lt;/location&gt;
&lt;configuration&gt;
另外还要记住，在 machine.config 文件中使用 <deployment retail="true"/> 开关会关闭向远程和本地客户端显示 ASP.NET 详细错误消息的功能，这一点我前面已经提过。如果您运行的是 ASP.NET 2.0，则仍应将此部署发布开关作为关闭这些错误消息的主要方法。（要获得有关 ASP.NET 异常的详细信息，请使用应用程序事件日志。）
在 Microsoft.com 面向内部的预运行环境根 web.config 文件中，应将 <customErrors> 模式属性设置为关闭，以便始终向本机和远程客户端都显示 ASP.NET 错误。这是为了启用调试和故障排除功能。此外，不应配置任何自定义错误页：
<configuration>
    <location allowOverride="false">
        <system.web>
            <customErrors mode="Off" />
        </system.web>
    </location>
<configuration>

9. 了解启用跟踪的时机
ASP.NET 跟踪在执行 ASP.NET 页时生成，它捕获有关 Web 请求、页控制树以及页生命周期和控制的各个阶段的执行等感兴趣的详细信息。此外，还可以显示页面开发人员为跟踪编写的自定义消息。跟踪可以附加在被跟踪和检查的页的响应输出中，作为应用程序跟踪查看器中被跟踪请求列表的一部分。此功能主要用于内部预运行环境中的开发调试，不应用于实际的运行部署。
在 Microsoft.com 运行环境和临时环境的根 web.config 文件中，将启用 <configuration><system.web><trace> 的属性设置为“false”，以便禁用网页中的跟踪信息输出功能。请注意，<trace> 元素包含在 allowOverride="false" 的 <location> 标记中。这是为了防止各个应用程序所有者意外（或有意）设置 enabled="true" 并将详细的 ASP.NET 跟踪信息输出到 Internet 上：
<configuration>
    <location allowOverride="false">
        <system.web>
              <trace enabled="false" localOnly="true"
              pageOutput="false" requestLimit="10" traceMode="SortByTime" />
        </system.web>
    </location>
<configuration>

<system.web><trace>
正如前面提到的，在 machine.config 文件中使用 <deployment retail="true"/> 开关也会关闭网页中的 ASP.NET 跟踪输出功能。如果您运行的是 .NET Framework 2.0，则仍应将此开关用作关闭跟踪输出的主要方法。
为完全确保跟踪不会在面向外部的运行环境中意外地变为启用，在 Microsoft.com 上，我们将实际的 trace.axd 处理程序从根 web.config 文件中删除或将其注释掉，如下所示：
<!--
<add path="trace.axd" verb="*" type=
    "System.Web.Handlers.TraceHandler"
    validate="True" />
-->

10. 禁用会话状态 Web 场
由于 Microsoft.com 上的所有网站当前都使用网络负载平衡 (NLB) 组成不关联的群集（以允许跨群集中的所有服务器分发请求），因而无法保证同一台服务器将处理给定应用程序的所有请求。为此，应禁用 ASP.NET 会话状态模块以防止应用程序开发人员使用 Session 属性。如果应用程序开发人员需要维护状态，我们向他们提供的准则是使用“查看状态”命令（它将在页代码的结构中维护状态，从而不会使用任何服务器资源）。
要禁用 Web 服务器上的会话状态，只需从 <httpModules> 节点删除以下子节点即可：
<add name="Session" type=
    "System.Web.SessionState.
    SessionStateModule"/>
在这里，我假定您已经见过甚至使用过 ASP.NET 配置文件（machine.config、根 web.config 和各个应用程序的 web.config 文件），但如果您没有，请学习以下 ASP.NET 快速入门教程以获得帮助：asp.net/QuickStart/aspnet/doc/management/fileformat.aspx。
该文档提到 ASP.NET 2.0 配置系统现在还包含大量有用的功能，它们允许管理员使用 lockItems 和 lockCollections 属性锁定配置的各个元素和属性。这些属性及其用法的信息已归档到以下文章中：“节元素继承的常规属性”。

Jeff Toews 是一位系统工程经理，他是总部位于雷蒙德的 Microsoft.com 运营小组的成员，任职已有六年。如果您有任何技术问题或意见，可以发送邮件到 mscomblg@microsoft.com，与他联系。


 现场注意事项: 学会寻求帮助
现场注意事项
学会寻求帮助
Edward Dake

桌面机浩繁庞杂 管理员认为他们不需要帮助。我们应当依靠自身，并获取所有应当了解的信息。计算机只能依我们的“命令”行事，而软件则仅能根据设计按部就班地运行。为什么我们需要寻求帮助或与同事协作？
谁会关心您的组织中有多少管理员在辛苦工作呢？每个人都各司其职，我们对此心知肚明，因此，当设置或基础结构发生变化时，我们始终都会彼此相告。在企业中有您无法访问的服务器吗？显然，它不是暂时停机以进行日常维护，而是永久处于脱机状态。只需删除它即可！不要与任何人协商来了解真实情况，不要通过电子邮件发送或引用任何由信息技术基础结构库 (ITIL) 或 Microsoft® 操作框架 (MOF) 推荐的变更管理文档。需要尝试一些新的产品或过程吗？当我们有了可以使用的货真价实的机器，谁还需要虚拟机？
所有这些示例听起来很“恐怖”，对吗？尽管这些情况看起来很牵强，但在我作为技术支持工程师的职业生涯中确曾遇到过这类问题。通过一些规划以及跨小组的交流，其中许多情况完全可以避免。
实际上，为了切实提高效率，管理员需要依靠一个由 IT 小组内外相关人员组成的整体团队。我没法获取我应当了解的关于管理当今不同种类企业环境的知识。我们需要与相关人员保持密切联系，这样，当需要的时候，就可以向专家寻求帮助。我的即时消息列表中罗列了值得我尊敬和信赖的其他组的人员。
我发现构建一个由需要协作的同事组成的网络（无论是以有线方式还是无线方式）对于解决以前未遇到的问题或处理涉及多种技术的复杂问题是非常有帮助的。例如，假设您要解决 Active Directory® 复制问题。该问题是一个复制问题还是一个 DNS 问题？术语 "Forestprep" 现在用于 Exchange Server 和 Active Directory。要尝试哪个 forestprep？我需要与同事进行 Exchange 或 Active Directory 方面的协作吗？
我使用我在 Microsoft Office Communicator 和 Windows Live™ Messenger（新发布的）中按组分类的联系人信息，我无法确切告诉您我的工程师同事帮我解决了多少复杂的问题。认识您的同事，如果遇到超出您的特定技术支持范围的问题，可以向他们寻求帮助。多数人是非常乐于助人的，这意味着您可以更加及时地解决遇到的问题，或在大问题出现之前做到防患于未然。
我的协作工具箱中的其他工具包括 Microsoft Technical Communities、Support Webcasts 和 Product Solution Centers。所有这些工具都是作为 Self Support Options 中“Microsoft 帮助和支持”页的菜单选项。我发现新闻组（“技术社区”部分）对于介绍由遇到过同样问题的人员或拥有与您相匹配环境的人员提供的信息和建议而言，非常方便。
将您自己添加到针对特定技术的新闻通讯分发列表中也同样非常有帮助。这类公告包含一些提示和技巧、最佳实践以及其他一些能够帮助我解决问题并及时了解新功能的信息。
在虚拟环境中进行测试是一种测试架构更新、组策略、环境变更以及许多其他产品和过程的安全方法。您可以使用 Microsoft Virtual Server 2005 R2（注册后免费下载）来构建一个实验室以便在将更新全面部署到生产环境之前，对其进行测试。采用这种方法，您可以在一个非生产环境中发现并解决潜在的问题，并在企业全面实施过程中，避免意想不到的问题。我在 Windows Server System™ Reference Architecture (WSSRA) 找到下列对规划和设计虚拟测试环境非常有用的资源。具体内容，请参阅题为“针对开发与测试的 WSSRA 虚拟环境”的文档。涉及规划、测试和试验部署项目的那一章特别有用。
我还重点推荐 TechNet 虚拟实验室，从中您可以获得产品的演示和测试驱动器。这些实验室定期更新，它们是无需花费时间和精力自行构建环境就可初步了解产品或技术的重要场所。
我还发现许多产品当前版本中的“帮助与技术支持”功能非常有用。该功能往往经过多次改进，现已成为非常有用的工具，可用来研究针对当前技术和更新内容的帮助。当然，也不要忘记有关快速搜索和帮助的在线文档和电子书籍。成为一名出色的管理员并不意味着您需要了解一切。也许更为重要的是要知道从何处寻求帮助。通过与同事以及其他组中的人员协作来解决力所不能及或陌生的问题，您将成为更棒的管理员。这一行业的魅力在于我们形成了一个社区，因而应当努力建立与他人的相互关系。我经常依靠他人的帮助来解决问题。通过与他人协作，最终都取得了令人满意的结果，我的管理技能也得以增强。

Edward Dake自 1997 年以来一直在 Microsoft Corporation 供职，曾担任技术客户经理兼技术支持工程师。他目前的角色是客户服务与技术支持组织中目录服务小组的技术指导。


 Windows 机密: 成功解决兼容性问题
Windows 机密
成功解决兼容性问题
Raymond Chen

有一个程序 是针对 Windows® 3.1 编写的，它通过查找“控制面板”窗口、访问“文件”菜单并搜索名为“打印机”的项，以打开“打印机控制面板”。在 Windows 95 中，“控制面板”的“文件”菜单下没有“打印机”选项。因此，当在 Windows 95 上运行时，此程序会把垃圾命令消息发布到“控制面板”上。为解决这一问题，Windows 95 创建了一个诱捕“控制面板”窗口，以便该程序进行查找。当该程序将消息发布给诱捕窗口时，将打开“打印机”文件夹。
一些人指出，Windows 3.1 应该检测到该程序对“控制面板”做出了错误的假设，并显示警告。这样，程序的制作者会看到该警告并在发布产品之前修复该问题。但检测代码块的目的需要一定程度的分析，这涉及到人工智能领域。从根本上说，Windows 3.1 必须检测到该程序正在对打印机进行 strcmp，分析特定的 strcmp，并确定它是否错误。但这只适用于打印机的情形。您希望系统进行多少次兼容性检查？误报又怎么办呢？
另一个观点是，Windows 95 应对该错误的假设做出响应，并显示警告对话“Program XYZ is doing something bad.”但要让“控制面板”了解是谁发布了垃圾消息，则该检测必须放在窗口管理器中。这就会在“控制面板”和窗口管理器两个组件之间创建弱耦合。同样，这也只适用于一种情形。您是否希望窗口管理器与系统中的所有其他组件都建立弱耦合？
如果是一般消息，不指出具体的应用程序名会更容易一些。但这也不是好的解决办法。模糊的错误消息就跟没有错误消息是一样的。而且，该对话框很可能会被用户忽视 － 再加上它并不推荐具体的操作过程就尤其如此。用户会认为该对话框是干扰对话框。这一点非常重要。任何错误消息都必须有可操作信息。如果用户知道如何对警告采取应对措施，那么此对话框就有用了。
另一个问题就是由于对话循环，对话框会创建一个重入点。这是技术问题。异常的重入是 UI 编程中 Bug 的一个主要来源。而且，“控制面板”本身可能处于模式状态，显示对话框则会导致模式结构崩溃。
对话框还会造成新的本地化负担。如果为每个兼容性 hack 都编写一个对话框，那么在系统中将出现数百个对话框。每个对话框必须翻译成 33 种语言，Windows 将提供这 33 种语言的完整的翻译版本。
最后，还要考虑当使用竞争对手的产品导致出现以上一种对话框时，竞争对手的反应。他们会说“明明是 Microsoft 自身的操作系统有问题，却说是别人的错误”，“Microsoft 故意使我们的程序看上去有错误”等等诸如此类的话。我并不是夸大其词。的确有公司向国会控诉说 Microsoft 在恶意针对和禁用他们的软件。但经过进一步调查，发现他们的程序中存在 Bug。坦白说，为他们修复 Bug 比忍受长时间的国会调查要好得多。
因此，当程序与 Windows 不兼容以致于程序无法运行或运行受到严重限制时，当前版本的 Windows 只显示警告对话。即使在这种情况下，Microsoft 仍试图与供应商合作，以确保帮助所有客户摆脱困境。毕竟人们希望能够在其购买的操作系统上运行程序。如果程序无法工作，您不会关心这是谁的错误 － 您只希望完成您的工作。

Raymond Chen 的网站，The Old New Thing，关于 Windows 历史和 Win32 编程。他正在编写一本书，恰巧书名也叫 The Old New Thing (Addison-Wesley, 2007)。