 TechNet Magazine January 2007

TechNet Magazine January 2007

SharePoint: Microsoft Office SharePoint Server 2007 概述

SharePoint 的新版本无疑可满足单个集成的平台中协作和信息管理的需求。此处简要介绍 MOSS 的新功能和工具，它们将改变企业的运营方式。

Thomas Rizzo SharePoint: 增强 SharePoint 安全性的 7 项新功能

随着 SharePoint 开拓越来越多的企业数据并与业务工作流程更加整合，安全性变得相当重要。了解 MOSS 中的这七项新功能如何迅速改善您组织的安全性。

Adam Robert Buenz SharePoint: 利用“SharePoint 企业搜索”进行查找

在员工尝试跟踪信息的过程中，公司损失的是时间和金钱。企业搜索可以发挥作用。MOSS 提供了可快速查找信息的企业搜索工具，无论信息是存放在 intranet 站点、业务线应用程序中或者甚至就来自于个别员工。

Matt Hester SharePoint: SharePoint 强大的命令行管理功能

不要被 GUI 给难住了。还有强大得多和快得多的方法来管理 SharePoint，那就是从命令提示符执行管理任务，甚至编写公用脚本过程。

Todd Klindt SharePoint: 在工作时使用 Wiki

Wiki 提供了一种更为灵活的全新协作方式，鼓励以非结构化的方法思考并交换看法。并且 MOSS 2007 可以帮您在组织内极其简单地实施 wiki。以下是您开始在工作场所中构建和使用 wiki 之前需要了解的一些信息。

Mauro Cardarelli 编辑视角: 行业往往会

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

Greg Steen 实用工具特别推荐: Internet Explorer 管理工具包

Lance Whitney SQL 问题与解答: 数据存档、链接服务器、测量带宽及其他内容

Edited by Nancy Michell 网络专家: TCP 接收窗口自动调节

Joseph Davies Windows PowerShell: Windows PowerShell 构造

Don Jones 您好，脚本专家！: 言词要谨慎

The Microsoft Scripting Guys Exchange Queue & A: 我们知道全部的答案（因为问题是我们提的）

KC Lemson and Paul Bowden 安全观察: Windows Vista 中的服务增强

Wole Moses 桌面文件: Windows 自动安装工具包

Wes Miller 现场注意事项: 为姻亲提供技术支持

James Snell Windows 机密: 摆脱 DLL 梦魇

Raymond Chen


 SharePoint: Microsoft Office SharePoint Server 2007 概述
SharePoint Thomas Rizzo

Microsoft Office SharePoint Server 2007 概述
概览:
  • SharePoint Web 集成
  • 内容管理
  • 商业智能

随着两种现象的出现，被 Microsoft 称作“工作新世界”的企业运营方式正在发生改变。第一种现象是，工作团队中的成员更频繁地需要在不同地点
甚至是一天中的不同时间段工作。因此，采用协作软件来保证工作的全球连接性质变得更加重要。第二种现象是，对数字信息的使用正急剧增加，而且关于此业务数据的遵从性规则也更加复杂。很多公司都在全力完善协作和共享，同时保证信息安全和隐私。满足所有这些需求（如跨大陆和时区的通信、有效的协作工具以及安全的数据处理）的解决方案绝对是充分利用信息和人员资产的关键。
引入 Microsoft® Office SharePoint® Server (MOSS) 2007 正是要把各种技术汇集到单个集成的平台和企业服务集合中。这些技术包括协作、门户、企业搜索以及工作流和业务流程。MOSS 代表以 Windows® SharePoint Services (WSS) 为基础构建的下一代 SharePoint Portal Server (SPS)。参阅 图 1 中的饼图可很轻松地了解 MOSS 和 WSS 是如何协同工作的。绿色阴影区域由 WSS 提供，而且因为 MOSS 是基于 WSS 构建的，所以整个饼图由 MOSS 发布。MOSS 特别提供了门户、搜索、企业内容管理、业务流程和表单以及商业智能部分。
图 1 基于 MOSS 和 WSS 构建的服务
图 1 基于 MOSS 和 WSS 构建的服务
本文中的余下部分将介绍 MOSS 中的技术要点，以及如何利用这些技术优势来提高用户的生产效率。

SharePoint 满足 Web 2.0
无论称其为 Web 2.0、Enterprise 2.0、复合应用程序还是社区主导内容，AJAX、RSS、博客和 wiki 等 Internet 技术都可使用户们更有效地控制他们的内容、协作和数据流向他们的方式。而且，他们还想要 Windows 的交互性以及 Web 所提供的易于部署性和易用性。但是把 Internet 概念引入企业设置也会带来新问题。例如，是否能够验证和信任服务来源？该服务是否可干净利落地与现有的基础结构进行集成？
MOSS 2007 提供了大量新特性，同时也改善了现有的协作平台，而这一切是通过提供用于文档管理和警报的内置功能，以及添加博客（参见 图 2）、wiki 和 Web 部件等用于发布和接收 RSS 源的新功能来实现的。使用 Microsoft Office Outlook® 2007 时，可执行协作数据的双向同步，这些协作数据包括日历、任务以及 Outlook 和 Microsoft SharePoint 之间的联系人。如果要更改联系人和移动约会，可在 Outlook 或 SharePoint 中做出相应更改，随后更改结果会显示在另一个程序中。
图 2 MOSS 2007 支持博客和 Wiki
图 2 MOSS 2007 支持博客和 Wiki
Outlook 同样能够离线获取文档库。可更改已经与自己的网络断开连接的文档，然后在下次在线时重新与这些更改同步。
此外，MOSS 能够审核和加强关于社区主导内容的遵从性规则，这样就可以在不牺牲用户的可管理性或安全性的条件下提供这些新功能。
MOSS 2007 的主要优势是它增强了门户体验的个性化。MOSS 对“我的站点”进行了修改，使其可以完全利用 SharePoint 站点的功能。用户可在“我的站点”中创建列表、文档库或子站点，并且自定义查看这些站点的显示方式，以使之与个人和工作组视图相符。“我的站点”同样为组织层次结构和同事跟踪提供了新的 Web 部件，包括在同事的元数据（例如他们的电话号码、职称、办公地点或其他信息）发生更改时发出警报。图 3 显示了一个在 MOSS 中自定义的“我的站点”。
图 3 “我的站点”支持更多以 SharePoint 为中心的功能
图 3 “我的站点”支持更多以 SharePoint 为中心的功能

企业搜索
如果硬盘比较小，那么要记住各种内容的存储位置并不困难。然而，随着硬盘容量的急剧增长，用户似乎永远也无法把硬盘填满，这时如何进行搜索就成了所有信息体系结构需要首先考虑的问题。MOSS 提供了用于搜索企业存储库的增强功能，这些功能最初构建在 SPS 2003 所提供的搜索平台上。MOSS 2007 会继续爬网文件共享、网站、Exchange Server 和 Lotus Notes 存储库，这些存储库都被视为非结构化数据存储库。
SPS 不会轻易提供搜索业务线应用程序或关系数据库等结构化存储库的功能。此外，每个雇员向组织提供的元数据和专业知识补充了结构化和非结构化存储库。MOSS 可以通过业务数据目录 (BDC) 这项新技术来搜索结构化存储库，也可以通过新的知识网络来搜索人员和专业知识。
BDC 可连接、爬网以及搜索通过 ADO.NET 提供程序或 Web 服务显示其数据的系统。创建 XML 配置文件，该文件包含关于要连接到的系统的必要信息。这些信息可包括服务器或终结点的名称、如何枚举和检索该系统的对象、筛选后端系统所支持的对象以及如何把后端数据映射到 SharePoint 数据。然后就可使用 SharePoint 中的企业搜索功能搜索 BDC 数据，搜索方法与爬网其他企业存储库时所采用的方法相同。
在默认情况下，SharePoint 为后端系统中的每个企业实体创建一个配置文件页面。可采用在 SharePoint 中定义页面的方法来自定义这些配置文件页面。图 4 中显示了一个返回业务数据和其他信息的自定义配置文件页面。SharePoint 也包括许多业务数据 Web 部件，这些部件能够在页面中显示 BDC 数据以及有选择地根据可用的元数据在这些页面中筛选数据。因为已经把业务数据映射至 SharePoint，所以可使用新的“业务数据”列类型在 SharePoint 列表内访问自己的数据。列表中的数据都来自授权后端系统，这样就不会再产生数据输入错误和数据清洁。
图 4 把业务数据放置到后端服务的 SharePoint 页面
图 4 把业务数据放置到后端服务的 SharePoint 页面
可通过知识网络以多种方法搜索人员和专业知识。可通过企业中的社会网络来开展业务。在很多情况下，如果员工们在处理业务问题时有专家相助，那么他们的工作效率会明显提高。但是，您在指导一群不具备自己所需的知识的同事时，或许会停止查找这种专业知识。通过知识网络，无需依靠物理社会网络，只使用软件就可以构建组织的社会地图并搜索相关的社会网络。可根据社会距离对结果进行排序，以及根据职称或部门等元数据属性筛选结果。
如同任何处理人员及其个人身份信息的解决方案一样，知识网络提供了大量安全和隐私模型，这样用户就可选择网络并控制网络中的各方所能看到的内容。知识网络会爬网“SharePoint 我的站点”等服务器端信息。它也拥有插入 Outlook 和“即时消息”的客户端组件，并通过该组件爬网电子邮件和联系人。可在客户端控制何时开始定期爬网以及把客户端爬网的哪些内容发布到服务器配置文件。专业知识系统失落的原因之一就是必须使人员数据保持最新。而通过知识网络，软件可维护信息的全部更新，同时允许用户控制该数据的可见性和可访问性。

企业内容管理
除了可管理文档外，MOSS 2007 还可更好地支持管理记录、Web 内容和电子表单，从而提供了稳定可靠的企业内容管理解决方案。SharePoint 的记录管理功能可构建管理存储库，该存储库满足内容保留、审核、条码和标记等遵从性要求。通过与 Exchange Server 的紧密集成，该记录存储库除了包含在 SharePoint 内部创建和存储的信息外，还可包含作为官方记录的电子邮件。可使用记录管理功能通过搜索记录和合法保留执行合法搜寻，这样就可打破保留策略（这取决于相关的法律程序，也就是需要保留内容的时间长于保留策略所指定的时间时所涉及的法律程序）。
在 Web 内容管理领域中，MOSS 2007 已经取代了 Microsoft Content Management Server 2002。因此，SharePoint 如今可满足从 intranet 到 extranet，再到面向 Internet 站点的 Web 需求。使用 SharePoint 所提供的所有这些功能，您只需在整个基础结构中支持一种技术。SharePoint 支持内容部署，这样就可拥有单独的测试服务器和部署服务器。而且，SharePoint 也通过支持 ASP.NET 2.0 母版页使得自定义站点更加方便。此外，对于多语言方案而言，SharePoint 支持站点变体，这样单个站点就可有多种变体并根据客户查看页面时浏览器的语言设置进行自动重定向。
对于电子表单，SharePoint 添加了一项称为 InfoPath® Forms Services 的新功能，该功能可将 InfoPath 表单转换为电子表单。这个过程包括以下几个步骤：创建 InfoPath 表单；选择设计器中的某个方框，以便在您尝试使用无法转换为 Web 的功能时让系统警告您；把表单保存到 SharePoint 列表中受信任的位置上。然后，您的用户只需使用 Web 浏览器就可查看、编辑和提交您的表单。
来自 SPS 2003 用户的一项重大功能请求就是改善其工作流功能，因为很多用户想要向存储在 SharePoint 中的内容里嵌入工作流。MOSS 添加了采用 .NET Framework 3.0 的新 Windows Workflow Foundation 功能，这样所带来的改进比只是改进工作流大的多。如今用户们不但可以构建针对 Windows Workflow Foundation 的工作流，而且可以在 SharePoint 内部使用这些工作流功能。除了托管 Windows Workflow Foundation 外，SharePoint 也包括许多工作流（包括文档审批和文档签名工作流）。图 5 显示如何配置 MOSS 中的现有工作流。
图 5 设置 MOSS 中的工作流
图 5 设置 MOSS 中的工作流
可通过 MOSS 监视工作流以获取当前任务状态和历史任务状态。此外，SharePoint 集成了 Office 客户端，这样最终用户可从他们的 Office 应用程序内部启动工作流。此外，他们可迅速看到分配给自己的工作流任务，并且无需离开 Office 应用程序就可完成这些任务。
MOSS 也扩展到了商业智能门户。这些门户通常包括可排序和筛选的报告、图表和数据表，以及有助于表示数据状态的功能图形。通过 MOSS，只需使用商业智能 (BI) 仪表板模板创建新的页面就可以构建商业智能门户。在默认情况下，BI 仪表板包括一个关键性能指标 (KPI) 列表和 Excel® Web Access Web 部件。
KPI 列表是 MOSS 新提供的列表类型，通过这种列表可连接 Excel、SQL Server™ Analysis Services、SharePoint 列表或手动输入的信息等信息源，并且可以跟踪这些数据源的 KPI。可使用可视标志在 KPI 列表中查看当前值、目标值、趋势和状态。
Excel Web Access 是 Excel 的服务器端版本，它是 MOSS 中的 Excel Services 的一部分，可通过它使用 Web 浏览器计算和显示自己的 Excel 信息。要使用 Excel Services，可直接从 Excel 桌面应用程序把电子表格发布到 SharePoint 中受信任的位置上。随后用户就可使用自己的 Web 浏览器查看 Excel 电子表格或图表。而且用户还可根据自己的需要，通过某些参数或筛选条件来修改 Excel 信息的 Web 浏览器呈现。

了解更多
这里只介绍了 MOSS 新功能的一小部分内容，要继续了解这些新功能，请广泛参阅在线资源。建议从 SharePoint Team Blog （英文） 和 SharePoint Server TechCenter （英文） 开始参阅。

Thomas Rizzo 是 Microsoft 的 SharePoint 组的主管。Tom 之前在 SQL Server 和 Exchange Server 组中任职。他也著有四部著作。您可以通过向 thomriz@microsoft.com 发送电子邮件与他联系。
© 2007 Microsoft Corporation 与 CMP Media, LLC.保留所有权利；不得对全文或部分内容进行复制.


 SharePoint: 增强 SharePoint 安全性的 7 项新功能
SharePoint Adam Robert Buenz

增强 SharePoint 安全性的 7 项新功能
概览:
  • 身份验证提供程序
  • 本机加密功能
  • 备用访问映射和区域
  • 信息权限管理

为您的 Microsoft Office SharePoint Server (MOSS) 2007 环境实施有效安全措施可以显著降低日常管理费用，同时允许团队
在安全的环境中协作并共享业务数据。MOSS 2007 内置创新的身份验证功能，使您能够通过自定义身份验证提供程序、基于表单的 Internet 风格身份验证和 Web 单一登录 (SSO)，充分利用基于 Web 的安全标准。而且，MOSS 还提供对公司资产（例如 2007 Microsoft® Office 系统文件）的详细权限管理、本机加密功能和简化的客户端身份验证义务。
以下是 MOSS 2007 提供的七项安全功能，您可以快速投入使用。
1. 可插入身份验证提供程序 身份验证提供程序是检验用户凭据的组件。在设置 Internet 风格的 SharePoint® 身份验证时，为 MOSS 环境配置身份验证提供程序是一项重要的安全决策。MOSS 继续支持 SharePoint 之前版本可用的、基于 Windows® 的身份验证方法，包括识别用户确切 Windows 身份的集成和基本身份验证（后来加入摘要式身份验证）。但是，识别 Windows 身份不再是唯一的选择。您可以利用多个身份验证提供程序，举例来说，内部用户通过 Windows 身份验证登录，而外部用户通过独立、可插入的提供程序来登录。
MOSS 是基于 ASP.NET 2.0 构建的，而 ASP.NET 2.0 允许使用可插入身份验证提供程序。这样，您就可以使用可配置的目录来存储用户信息，只要存在对应成员数据存储的 ASP.NET 2.0 成员身份提供程序（和可选角色提供程序）。根据存储在对应的成员身份提供程序 machine.config 文件中的节点值，可插入提供程序的凭据可被散列、加密或以纯文本存储。一些成员身份提供程序可用于 MOSS，其中一些包括 LDAP V3 成员身份提供程序（随 MOSS 一同发售），加上 SQL Server™ 成员身份提供程序和随 ASP.NET 2.0 提供的 Active Directory® 成员身份提供程序。
可实施的成员身份和角色提供程序不仅限于已发售的提供程序。使用 ASP.NET 2.0 成员身份体系结构，可以创建一些使用 Microsoft Access™、Oracle 数据库、XML 文件甚至纯文本文件来存储成员身份的自定义提供程序。自定义身份验证提供程序继承 ASP.NET MembershipProvider 接口，而后者又继承 ProviderBase 类（参见图 1）。
图 1 .NET 成员身份类层次结构
图 1 .NET 成员身份类层次结构
要随 MOSS 使用 ASP.NET 2.0 身份验证（与 Windows 身份验证对照），有几点建议应该加以考虑。MOSS 和 Office 客户端之间的 Web 服务通讯原本设计为与 Windows 身份一起使用，这给许多用户带来的最明显的优势就是 Microsoft Office 客户端简化的互操作性。
另外，某些 MOSS 服务（特别是那些与爬网和索引内容相关的），即使在使用可插入提供程序时也必须使用 Windows 帐户。要使用不能识别为 Windows 身份的验证类型来完成此任务，需要创建采用 Windows 身份验证的另外的 MOSS 区域。（本文稍后将讨论区域。）
如果您拥有基于某种安全机制（例如智能卡）的委托 PKI 基础结构，而该安全机制的公钥或证书是由客户端携带，则通常需要根据实现方法的不同，识别 Windows 身份，以正确接受和授权客户端证书。这可能反而需要创建另外的 MOSS 区域或其他身份验证配置。
2. 基于表单的身份验证和 Web 单一登录 MOSS 2007 可用的另一个令人兴奋的身份验证机制，就是以 ASP.NET 2.0 为基础的基于表单的身份验证。在 SharePoint 以前的版本中，这只能通过自定义 Internet 服务器应用程序编程接口 (ISAPI) 扩展或利用 IIS 6.0 工具包中的 CustomAuth ISAPI 扩展来实现。而即使有这些解决方案，SharePoint 仍然需要将帐户识别成 Windows 用户身份，这样就限制了基于外围网络的部署。
基于表单的 MOSS 身份验证利用可插入身份验证和角色提供程序，可提供 Internet 风格的安全机制，该机制不限制客户使用老式的 NT 登录提示。您可以构建一个面向用户需求的自定义登录过程。为进一步保护身份验证过程，表单身份验证 Cookie 和身份验证票证都是加密和防篡改的。
表单身份提供程序不必驻留本地，实际上可以插入到外部身份管理系统，而该系统转而提供用户凭据的验证功能。此功能被称为 Web 单一登录，它利用 HTTP 模块完成外部身份验证。在此类方案中，您可以在贵组织与业务合作伙伴之间进行身份联合，借此，它们便够使用各自的组织登录名向您所实现的 MOSS 进行验证。
3. 加密 MOSS 应用程序连接字符串 把重要的连接字符串信息以纯文本保存在 web.config 文件中，是很不好的安全习惯。泄漏的信息可使用户创建到 SQL 数据库服务器的对象实例并操作重要数据。但是，使用固有的 ASP.NET 2.0 功能，您可以利用以下两种可行技术的一种来加密数据：Windows 数据保护 API (DPAPI) 或 RSA 加密。DPAPI 利用 Windows 内置的加密功能，使用 MOSS 服务器计算机密钥来执行加密和解密。RSA 加密可让您使用公钥算法，但会带来额外的日常费用，因为需要适当的容器存放加密密钥。
对于 MOSS 2007 - 尤其是对于可插入 ASP.NET 2.0 SQL Server 身份验证提供程序 - 您将希望把 <connectionStrings> 节点加密成密文，因为在这里可能发生最严重的安全违规：
<connectionStrings>
<add name="MembershipConnectionString"
     connectionString="connectionString"/>
</connectionStrings>
相对而言，使用 DPAPI 加密比较直接，而且是最容易实现的，因为它使用本机计算机密钥对虚拟目录或物理目录进行加密。有其他方法以编程方式执行该任务，但是在命令提示符下使用以下命令是最轻松的：
aspnet_regiis.exe -pe section -app MOSS_virtual_directory -prov provider

aspnet_regiis.exe -pef section MOSS_physical_directory -prov provider
因为您仅仅主要关心对连接字符串节点进行加密，所以可通过指定段参数仅将特定的段加密即可：
aspnet_regiis.exe -pef "connectionStrings" "C:\Inetpub\wwwroot\WssVirtual " -prov "Provider"

aspnet_regiis.exe -pe "connectionStrings" -app "/MOSSAppinstance" -prov "Provider"
执行后，敏感信息节点将被格式正确的 XML 密码值代替：
<connectionStrings confiProtectionProvider=
"EncryptionProvider">
<EncryptedData>
<CipherData>
<CipherValue>XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</CipherValue>
<CipherData>
</EncryptedData>
</connectionStrings>
如同整个 MOSS 体系结构，此模块是可插入的，因为您可以创建自己的加密提供程序来管理相关 MOSS 配置文件（例如 web.config 或 machine.config）的密文，而且不仅是局限于 RSA 或 DPAPI 加密。
使用加密会产生一些后果，需要引起注意。因为您是使用本地计算机密钥来加密，所以只能在创建配置节点的 MOSS 服务器上使用它。否则，加密过程会失败。如果入侵者获得了服务器的访问权，他们可以取得计算机密钥并将连接字符串解密。解密过程也会导致应用程序性能的轻微损失。
4. 备用访问映射和区域 备用访问映射 (AAM) 至关重要，特别是为您的 SharePoint 环境设置一个以上的入口位置时。AAM 让您能够指定不同的 URL，通过这些 URL，用户可访问单一物理站点（参见图 2 中的图表）。AAM 可将用户引导到相同的 MOSS 站点物理路径，但使用不同的身份验证提供程序和 Web 应用程序安全策略。AAM 也能适应使用不同域、还原代理和其他 URL 重定向机制。默认情况下，MOSS 所使用的 URL 已经为您映射好了，但可以扩展到 SharePoint 体系结构设计者明确创建的其他 URL，用于处理不同登录方法。需要 AAM 来保证正确的内部和公共 URL 映射正常工作。SQL Server 身份验证提供程序
下面，让我们浏览一下可插入 ASP.NET 2.0 SQL Server 身份验证提供程序的实施过程。此提供程序使用基于表单的身份验证（具有加密的 web.config 连接字符串），这是一个非常典型的用于外围 (Extranet) MOSS 部署的实现。
启用可插入 SQL Server 提供程序的第一步是确保存储用户凭据的数据库在相应的 SQL Server 实例上创建，以便服务提供程序将其用来存储成员身份数据。要完成以上任务，从“运行”对话框或命令提示符执行下面的命令：
%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql
这样将显示 SQL Server 向导，该向导允许您配置用于存储成员数据的数据库。
由于您很可能尚未设置用于存储数据库的成员身份提供程序，因此请配置应用程序服务使用的 SQL Server，这样就会创建新的数据库。如果现已存在数据库，您可以添加相关信息（如果合并数据库是组织目标的话）。
SQL 连接字符串将要连接到此 SQL 实例，因此您将该数据库设置为使用 SQL Server 身份验证（参见图 A）。在这里，我将使用纯文本用户名和密码，因为在随后的设置过程中，我将向您展示如何使用原生 ASP.NET 2.0 加密功能来以密文隐藏此隐私连接信息，以防止可能的泄密。

创建登录表单
基于表单的身份验证通常用于面向外部的站点，这些站点将要驻留在外围网络并向所有 Internet 用户开放。在此前提下，当创建 Extranet 站点集合时，最好选择发布到 Internet 的 MOSS 模板。如果使用该模板，您就不必手动创建登录表单了。如果您正在扩展当前站点或希望实施自定义登录表单，可以使用 Microsoft Visual Studio® 2005 轻松手动创建。相对而言，需要的代码编写工作较少。
首先通过 Visual Studio 将站点集合物理目录作为网站打开，目录通常存储在类似下面的位置：
C:\Inetpub\wwwroot\wss\VirtualDirectories\<GUID>
第一步是添加 default.aspx 页面，这是 IIS 虚拟服务器设置中的默认文档。使用解决方案浏览器中的“添加项目”命令，然后使用 Visual Studio 工具箱向新创建的 Web 表单表面添加登录控件。
图 b从“应用程序管理”屏幕中选择“身份验证提供程序”
在同一页面上，确保成员身份提供程序部分用于身份验证的提供程序指定为 AspNetSqlMembershipProvider 且“角色”管理器名称是 AspNetSqlRoleProvider。指定您想要最终用户有匿名访问权的位置，方法是导航到 /_layouts/setanon.aspx 并选择整个站点或最适合您需求的安全设置。
可通过修改 web.config 进行大的修改。确保 <身份验证> 元素设置为使用 <表单> 元素。这通常在您从 Windows 身份验证切换到表单验证时自动配置，而且它是登录过程的重要部分，因为它将携带有关用户身份验证票证的数据，而票证接下来又将在通过 ASP.NET 2.0 身份验证方法传回的页面中验证用户凭据。但 web.config 仍然不知道用户存储的 SQL 连接，因此您必须添加连接字符串条目，以连接到成员身份数据库：
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Server=SQLserver;
Database=aspnetdb;uid=username;
pwd=password;" providerName="System.Data.SqlClient" />
</connectionStrings>
对管理中心站点的 web.config 文件进行相同的修改以提高身份验证类型的一致程度，并保证 PeoplePickerWildCard 识别到 AspNetSqlMembershipProvider，以便添加用户所用的查找控件知道正确的搜索路径。
因为您对后端 XML 文件进行修改，所以 MOSS 要求您重置 IIS。一旦您连接到 SQL Server 数据库，就可以轻松浏览网站，除非没有管理内容的站点集合所有者。在 WAT 中，转到“安全”选项卡并添加用户，然后转到 SharePoint 站点管理并将相应用户添加到“站点集合管理员”下，使该用户成为站点集合管理员。姓名应当正确，因为对 web.config 文件中的 peoplepicker 节点的修改较早进行。
最后，通过打开“运行”对话框并执行以下代码，使用 DPAPI 加密连接字符串：
aspnet_regiis.exe -pef "connectionStrings"
"C:\Inetpub\wwwroot\WssVirtual\<GUID> "
—prov "DataProtectionConfigurationProvider"
操作成功完成时，您会看到一段确认完成的对话提示。

图 2 URL 映射和区域
图 2 URL 映射和区域
在 MOSS 中，区域是一项新功能，允许对 AAM 提供的站点映射进行更强的控制。根据用户连接到内容所用的 AAM URL 映射，区域允许您将不同身份验证提供程序映射到相同的物理路径和 MOSS 内容。指定 AAM URL 映射时，虽然将区域绑定到身份验证机制不是必须的，但这是推荐的做法。如果 AAM URL 映射到的区域在身份验证提供程序页面没有定义，则它会使用默认区域的安全设置。
区域需要进行计划，因为它们将对人们如何进行身份验证，如何从多个 URL 登录点进入您的门户产生重大影响。当扩展新的 Web 应用程序时，您可以在设置的“负载平衡 URL”部分（参见图 3）中指定想要使用的区域。建议您将访问的公开程度最高的 URL（例如，计划发布到 Internet 的 URL）放到“默认”区域中，因为这是 SharePoint 在无法完全确定您位于哪个区域时将会使用的 URL。
图 3 配置 MOSS 区域
图 3 配置 MOSS 区域
在每个区域内，您都可以为全局 Web 应用程序绑定安全策略，这些安全策略定义了此区域内的用户权限设置。这可让您集中管理大量的权限修改。Web 应用程序通常包括许多站点集合中的几个站点，而当应用程序变得大而复杂时，这些站点的权限管理可能会成为一个问题。MOSS 2007 允许设置全局安全策略，用以将策略设置（例如完全访问、完全读取访问、拒绝写入访问或拒绝全部访问）绑定到应用程序的特定用户或用户组。这些策略可以覆盖 MOSS 提供的、从“SharePoint 管理中心”界面管理的详细权限设置，所以您应该仔细计划您的配置。
综上所述，根据 AAM 设置中的定义，面向外部的站点可能有两个 URL：一个用于您的公司用户，另一个用于外部用户。两类用户都有唯一的 URL，例如，内部用户使用 contoso，而受信任的外部合作伙伴使用 extranet.contoso.com。这两个 URL 将映射到相同的内容，每个都能通过它自己的区域、以其自己的身份验证提供程序和自己的应用程序安全策略来访问站点。配置 Intranet 区域使用内部 URL，使内部用户识别为他们的域验证 Windows 身份，而外部合作伙伴通过 Extranet 区域的 Web 单一登录身份验证进行登录，外部网允许他们使用自己组织的用户凭据。通过发挥将 Web 应用程序安全策略绑定到区域的优势，就可以赋予所有信任的外部用户完全读取访问权限，这与在逐个对象的基础上手动设置形成鲜明的对比。
5. 安全协作的目标内容 锁定您的 SharePoint 站点集合意味着用户将只能处理您授权他们访问的信息。全新灵活的权限机制允许您对存储在 MOSS 环境中不同类型的业务信息进行更强的控制。
使用 MOSS 2007，您可以选择将身份绑定到某个特定对象，此特定对象可以是站点集合、单个站点、文档库、子文件夹、列表或单个文档或列表项。同时采用拒绝访问和调整用户界面的方法，使得用户不知道他们无权访问的项目，这加强了详细访问控制，并强制要求该对象所属的明确成员身份。MOSS 的这项功能称为项目级别安全 (ILS) 或安全对象 (SO)。MOSS 对象权限会自然继承，使权限能从单个对象（例如列表项）扩展到更大的对象（例如列表或文档库）。权限继承也可执行，使低层子对象可有选择地从高层父对象继承权限。一共有 33 个唯一的默认权限，可赋予到用户或 SharePoint 组，每个权限也可绑定到对象。您也可创建新权限级别。
例如，在项目管理站点内，您可以仅允许开发者和项目经理访问敏感的开发材料（例如存储在文档库 Microsoft Word 文档中的设计规格和编码技术）。默认情况下，库的权限从站点权限继承，但可以修改权限，以只赋予开发者和项目经理访问权，或者甚至可以使每个 Word 文档仅能由相应的项目经理和开发团队查看和访问。相反，不敏感的材料可完全公开，无论是在项目、文件夹还是文档库级别。
甚至可以对事件项目指定权限，例如“事件”列表中的项目到期日，这样可以确保仅特定成员可以查看特定事件。另外，ILS 功能可以扩展到返回的搜索结果，也就是仅返回能映射回搜索者的安全上下文的对象。所有这些有效的权限控制措施，会将用户界面“修剪”到专有的用户上下文范围以内。
权限管理体系结构在 MOSS 2007 中已经得到了极大的改进。可为 SharePoint 组和域组设置权限，也可在单独级别进行设置。有几个组已经进行了默认设置，特别是“所有者”（拥有完全控制权）、“访问者”（拥有参与人权限）和“成员”（拥有读取权限）。单独站点或域组可分配到这些默认组，或分配到您在站点集合级别创建和管理的自定义组，后者可拥有多种唯一的权限级别。
当创建基于角色的组时，您可创建“开发者”和“项目经理”组。您可以分配详细权限，例如，使开发者上载相关编码文档，和赋予项目经理读取和批准权限以便他们评估和签署那些文档。组成员身份在整个站点集合内保持一致，以便创建的组可在许多不同项目站点之间重用。
6. 集成可插入单一登录 在典型计算环境中，用户可对任何数量的第三方应用程序拥有访问权，每个应用程序都有自己的身份验证条件，这会导致多种安全问题和密码记忆难题。MOSS SSO 服务通过提供加密的用户凭据后端缓存，用以映射到与之相连的商业流程系统，从而缓解了这个问题。这有助于检索重要商业信息并通过 MOSS 机制（例如业务数据目录 (BDC) 或 SharePoint DataView Web 部件 (DVWP)）显示。
与所讨论的其中几个其他应用程序体系结构功能一样，MOSS SSO 提供程序也是可插入的；您可在随 MOSS 发售的提供程序 (SpsSsoProvider) 以外指定唯一的 SSO 提供程序，虽然环境中的每个商业流程系统每次仅能注册一个 SSO 提供程序。
7. 信息权限管理 (IRM) 对于经常处理敏感数据的公司而言，在客户端级别保护信息（甚至当商业信息脱机时）是一个不容忽视的问题，对于那些必须遵循相关法律（例如“加利福尼亚参议院议案第 1386 号”、“萨班斯 - 奥克斯利法案”（SOX 法规）和“医疗保险和责任法案”(HIPAA)）的公司尤为如此。与 MOSS 知识库集成的服务器端信息权限管理 (IRM) 提供了基于 Windows 权限管理 (WRM) 框架的通用解决方案。IRM 通过在文档级别强加访问限制，而不管文档储存在哪里或谁在尝试打开它，提供了对商业数据的严格控制。通用 IRM 的实施使您能够：仅允许授权的查看或打印，但这可以扩展到其他方案（例如在特定时间段后要求验证用户凭据）；不允许用户上载未采用 IRM 的资产；设定将丢弃限制策略的计划到期标签；以及绑定到全局组织 IRM 权限策略。
IRM 功能是由保护程序提供的，一些功能已随 MOSS 2007 安装。保护程序可管理文件类型的加密过程；通常情况下，存储在 MOSS 内的所有文件已创建好保护程序。（Microsoft Office 系统文件以及 OpenXML 文件格式得到本机支持。）然而，像其他 MOSS 内的提供程序一样，应用程序体系结构是可插入的，因此您可以为其他文件类型安装自定义保护程序。
实施 IRM 的第一步是确保在您的 MOSS 环境中满足全部要求。您需要在每个 MOSS 前端 Web 服务器上安装 WRM 服务客户端，且“Microsoft 权益管理服务”(RMS) 必须与 MOSS 前端 Web 服务器连通。然后，您必须通过“SharePoint 管理中心”指定 MOSS 吸收的 RMS 服务器，不管是使用 Active Directory 的默认值还是指定位置。
IRM 直接与 SharePoint 数据存储结构（例如文档库）协同工作以维护权限。当用户导航到启用 IRM 的文档库并尝试下载文档时，MOSS 会将权限（为文档库配置）绑定到文档上（参见图 4）。因此，MOSS 和文档权限之间存在 1:1 的映射，将文档相关的 SharePoint 角色转换成文档本身的 IRM 权限级别。
图 4 从文档库到 IRM 权限的转换
图 4 从文档库到 IRM 权限的转换
文档进行了本地加密以进行脱机保护，并且在被上载回文档库之前都会维持加密状态。当文档上载时，它维持在未加密格式，因此 SharePoint Gatherer 可为全文搜索而编录其内容的索引（但是没有用户帐户能够访问未加密格式的内容）。
MOSS 2007 提供了许多新功能，可帮助您在组织中实施有效的安全措施，而无需增加大量日常管理费用。这些功能还非常灵活，允许进行大量自定义，确保用户仅访问他们需要的信息。有关简单示例，请参阅边栏的“SQL Server 身份验证提供程序”。

Adam Robert Buenz 是一位 SharePoint 架构师兼 ARB Security Solutions LLC (sharepointsecurity.com) 的开发人员。他主攻以安全为中心的协作环境。您可通过 adam@sharepointsecurity.com 与他联络。


 SharePoint: 利用“SharePoint 企业搜索”进行查找
SharePoint Matt Hester

利用“SharePoint 企业搜索”进行查找
概览:
  • 企业搜索解决方案的体系结构
  • 对企业数据进行索引和查询
  • LOB 数据和人员知识

您可能会花费大量时间来担心诸如服务器正常运行时间和可用性、软件更新以及安全性这样的问题。但是即使基础结构运行情况非常良好（整个网络中的所有应用程序和文件都可用），
用户仍然可能会降低工作效率。当然，他们需要的数据是可用的，但他们得花费多少时间来查找数据呢？
在帮助人们处理信息超载方面已经做了大量的工作。桌面搜索工具有助于更加方便地查找存储于系统上的所有其他数据中的隐藏信息。（请参阅我 2006 年 8 月的文章“Find Anything with Windows Desktop Search”（英文）。）但是对于门户网站上可用的、存储在共享中的以及置于业务应用程序中的所有数据，又该如何处理呢？更不用说各位员工头脑里蕴藏的富有价值的信息了。此信息对于您的用户来说至关重要，因为他们需要此数据来完成工作，并且需要快速地获取这些数据，以及时而准确地进行业务决策。但想象一下用户需要花费多少时间来查找并收集遍布于网络之中的数据吧。现在请考虑一下这对企业底线的潜在影响。
当务之急是缩短用户跟踪存储在整个企业范围内的信息所用的时间。该如何完成此项任务？答案很简单，就是使用提供了企业搜索功能的搜索引擎。
企业搜索几乎可以查找存储在组织中所有地方的信息。无论寻找的是存储在桌面上的数据、存放在 intranet 站点的数据、锁定在业务线应用程序中的数据还是人员头脑中蕴涵的数据，企业搜索工具都可以发挥作用。（别担心，这不用将任何芯片植入用户的大脑中。）
企业搜索解决方案将桌面搜索和快速 intranet 搜索功能结合起来。最终，企业搜索工具必须能够执行联合搜索，这种搜索可以利用一个查询访问多个数据源。用户只需要一个界面输入查询。但实际上，查询会被发送到多个不同的搜索引擎，然后在一个聚合视图中显示结果。
在本文中，我将讨论下一代的 Microsoft SharePoint 解决方案 Microsoft® Office SharePoint® Server 2007 (MOSS 2007) 如何提供功能强大的搜索引擎，这种搜索引擎有助于消除组织中的信息真空区。MOSS 2007 在以前版本的基础上有多处改进，提供了完全重新开发的组件以及一些全新的功能。这里我将讨论其中的一些关键组件，例如索引、传播、关联性和内容源，以及这些组件如何帮助您向用户提供更出色的企业搜索功能。

利用 SharePoint 在企业范围内搜索
企业搜索将以四个版本提供，这些版本及它们之间的主要差别如下：Microsoft Office SharePoint Server 2007 for Search Standard Edition、Microsoft Office SharePoint Server 2007 for Search Enterprise Edition、Microsoft Office SharePoint Server 2007 Standard 和 Microsoft Office SharePoint Server 2007 Enterprise。
这两个 Search Edition 与所有 SharePoint Server 版本之间的主要差别是前者不包括“人员搜索”功能（该功能也包括与 MOSS 2007“知识网络”的集成）、“业务数据目录”或带可自定义选项卡的增强的“搜索中心”。图 1 详细说明了这些主要差别。
Figure 1 四种搜索工具的主要区别 (Close Figure 1)

 | Microsoft Office SharePoint Server 2007 for Search Standard Edition | Microsoft Office SharePoint Server 2007 for Search Enterprise Edition | Microsoft Office SharePoint Server 2007 Standard Edition | Microsoft Office SharePoint Server 2007 Enterprise Edition
索引 | 现有的四十种文件类型（可扩展） | 现有的四十种文件类型（可扩展） | 现有的四十种文件类型（可扩展） | 现有的四十种文件类型（可扩展）
支持（现有工具）对文件共享、网站、SharePoint 站点、Exchange 公用文件夹、Notes 数据库文件进行搜索 |  |  |  |
支持对第三方文档存储库进行搜索 |  |  |  |
支持搜索人员和专业知识 |  |  |  |
支持搜索结构化数据源 |  |  |  |
提供安全的内容访问控制 |  |  |  |
提供增强的“搜索中心”UI |  |  |  |
文档限制 | 400,000 | 无限制 | 无限制 | 无限制
UI 提供了许多新功能，包括“您是不是要搜索？”功能。此为 Internet 搜索引擎的一项重要功能，它会在您可能错误拼写了常用搜索术语时给出建议（见图 2）。界面还包括搜索命中项突出显示功能并完全支持“最佳匹配”。但这只是新的搜索功能中很小的一部分。
图 2 “SharePoint 搜索”中的“您是不是要搜索...”新功能
图 2 “SharePoint 搜索”中的“您是不是要搜索...”新功能

查找人员知识
新功能中的亮点是对拥有特定知识和技能的人员进行搜索的能力。这允许用户引入并利用组织范围内的员工所拥有的知识，这是消除真空区的重要一步。
要启用此功能，可以在任何轻量目录访问协议 (LDAP) 目录上执行索引和搜索，其中包括 Active Directory® 通讯组列表和 SharePoint 用户组。事实上，MOSS 不会直接搜索 LDAP 目录，要启用人员搜索，需要将 LDAP 信息导入 MOSS。（也可以在整个企业基础结构范围内执行搜索。）
搜索结果可以根据个人的“社会距离”进行分组，其中“社会距离”是指用户所在职位（销售助理可能不会想要给 CFO 打电话）与共同关注点之间的距离。图 3 显示了人员搜索的结果。
图 3 寻找具有相关知识的同事
图 3 寻找具有相关知识的同事

搜索业务数据
SharePoint 也可以对各种类型的业务数据进行索引。其中包括业务线应用程序，例如 HR 应用程序、CRM、开支报告等。过去，这种数据在 LOB 应用程序的普通界面上难以访问，使得大多数员工很难发现和使用这些数据。
但现在 MOSS 搜索可以从任意 LOB 应用程序检索数据，例如关系数据库或 Lotus Notes 数据库，可以通过 ADO.NET 或 Web 服务进行访问。这项功能的特别之处在于它不要求写入自定义代码。通过“业务数据目录”功能，就可以像访问任何文档或网站一样容易地获得业务数据。“业务数据目录”功能可以方便地与“搜索中心”所提供的属性管理和自定义范围集成。

返回关联性
当然，如果不能产生准确的结果，任何新功能都毫无价值而言。幸运的是，MOSS 在关联性方面有着显著的改进。但是，在讨论这些改进之前，我需要先介绍一下企业中的关联性与 Internet 中的关联性有何不同，这一点非常重要。
您可能想知道为什么 intranet 搜索不能仅依赖于和 Internet 搜索相同的工具，并因此获得相同的准确性。简而言之，这是两种截然不同的环境，需要及要求差别很大。这些差别主要可以分为以下三种：安全性、结构和层次结构。
安全性指 Internet 相对于企业而言所具有的简单特性。Internet 上的数据通常可匿名访问，索引和搜索不要求进行身份验证或安全修整。 另一方面，企业环境必须遵循严格的安全模型，包括筛选结果以与搜索者的权限相符。
结构的影响与密度有关。Internet 内容丰富而深入，其中的站点通过相互链接来扩充自身的内容。但在企业中，链接通常用于导航，而且结构密度也小得多。
松散关联链接结构是站点层次结构要素。Internet 中通常没有站点层次结构，并且顶级站点也非常少。但是，企业的 intranet 却是经规划而来，并且实际上具有层次结构。甚至当企业具有多个主根级别时，组织通常也只有一个主要门户。
这些根本的差别改变了企业搜索解决方案对数据进行索引并返回结果的方式。MOSS 2007 旨在更好地满足不同的企业需要。其特点是具有新的分级引擎，该引擎是通过采用现有技术并结合 Microsoft Research 和 MSN® 团队的工作成果开发而成的。通过创建一系列关联算法增强了关联性，这些算法可以收集有关正在爬网的文档以及业务线数据的内部和外部信息。在对企业数据进行索引时，将会扫描超过 200 种类型的文档，并且将算法应用于检测语言、提取元数据以及执行文本分析。这些新算法经过了专门的调整，以满足企业数据和 LOB 应用程序的需要，显著提高了结果的准确性。
关联性计算中包括几个元数据标记。以下是一些需要考虑的内容：
  • 单击“距离”，浏览到权威网站的距离（距离越短往往关联性越强）。
  • 锚文本超链接将作为其目标上的注释。此外，它们非常具有说明性。
  • URL 深度，层次级别越高的 URL 通常关联程度越高。
  • URL 匹配直接与 URL 中的文本相匹配。
  • 如果缺少标题和作者，“元数据提取”会自动从文档文本中提取。
  • “自动语言检测”可以帮助以所选择的语言创建首选项结果。
  • 倾向于特定文件类型的“文件类型”往往关联性更强，例如，PPT 文件通常比 XLS 文件关联性强。
  • 文本分析，基于匹配项、术语频率以及异形词等因素的传统文本分级。

索引是如何工作的？
MOSS 2007 在索引服务的工作方式以及内容管理方式上做出了重要改进。对于初学者，如果内容源为 SharePoint 服务器、网站、文件共享、Exchange 公用文件夹、Lotus Notes 数据库或 LOB 应用程序，则可以进行指定。全部的索引管理经验已经得到了简化，从而可以自由地在多个内容源之间选择进行索引的对象、方式以及时间。这可以通过爬网规则来处理，可使用此规则指定包括或不包括的路径。甚至可以配置爬网程序跟随 URL 链接的方式。内置日志给出了爬网站点的数量和其索引方式的综合视图。
该索引与 Windows® Desktop Search 中所用的索引技术类似。索引由两个主要的组件构成：内容索引和属性存储。这是处理数据的一种极其有效的方式。内容索引包括文件中所包含的实际文本以及企业索引中单词相关的逆选索引。属性存储数据库对结果的处理至关重要。属性存储数据库中保存着所有文档相关的其他全部元数据属性（如作者、所创建的数据、文档类型等）。从结构上来说，属性存储由包含属性及其值的表组成。表中的每一行对应于全文索引中一个单独的文档。属性存储还可维护并加强对文档进行索引时获得的文档级安全性。
索引和存储过程由负责爬网内容源的索引引擎开始执行。引擎在验证了具有可读取内容源的相应的协议处理程序后开始爬网。一旦加载了正确的内容源协议处理程序，该程序以及所需的 IFilters 就会从内容源提取并筛选内容项。IFilter 为加载项，对于采用其他方法无法进行索引的新型文件内容，索引引擎通过该加载项可以打开、读取并进行索引。IFilter 可以提取各个文档的文本和元数据，然后将流传递回索引引擎。
随后会将文档属性存储在属性存储中，并将文档的实际文本置于内容索引中。但之前索引引擎会先删除“干扰”词。引擎还使用断字器和词干分析器处理信息，以简化数据，从而更好地执行查询。（断字器将文本划分为单词和短语，词干分析器可以生成给定单词的变形形式。）
索引引擎可采用连续传播的方式立即建立索引。利用连续传播，即使爬网过程在整个内容源中进行也会继续建立索引。这项增强功能允许即时产生结果，这也是在 SharePoint Portal Sever 2003 基础上作出的重大改进，SharePoint Portal Sever 2003 爬网大量内容时会花费几天时间，而索引只有在爬网完成后才能传播。

查询是如何工作的？
用户输入查询或自定义应用程序调用索引时，查询引擎开始处理请求。它首先将查询传递给指定语言的断字器。如果语言无法识别，则调用与语言无关的断字器。查询分解后，引擎会将信息传递给词干分析器（如果启用了词干分析），以便进一步处理。该过程分为两个步骤，可以提高查询所返回的结果的关联性和有效性。
如果查询指定了属性信息，则首先检查内容索引以找到和属性存储中的文档配对的匹配，然后再次检查查询中的属性以确保匹配。查询引擎会进行其他级别的筛选，以删除用户不具有访问权限的结果。匹配结果以列表形式返回，并按关联性进行排序。图 4 概要介绍了索引和查询的全部组件的组合方式。
图 4 MOSS 2007 企业搜索环境的体系结构
图 4 MOSS 2007 企业搜索环境的体系结构

增强的管理
管理员将发现管理搜索环境变得更为容易。为最终用户和管理员提供了一组改进的常用工具，可以帮助降低由连接到平台的不同连接点所带来的复杂性。并且搜索引擎可以很好的利用 MOSS 2007 中的新式管理模型。（图 5 显示了用于修改搜索设置的主页面。）
图 5 配置搜索设置
图 5 配置搜索设置
范围也得到了改进，允许控制不同的搜索功能。可通过范围方便地在内容源中搜索，实质上是以较小的块管理索引。在 SharePoint Portal Server 2003 中，范围连接到内容源，这使其灵活性降低，管理方面的难度有所增加。在 MOSS 2007 中，范围与内容源分开，从而提供了更大程度的灵活性。可以根据 URL、类型或作者等任意内容属性来定义范围。甚至可以将多个范围结合起来，以具有多项规则，例如，特定作者编写的所有技术文档。
当然，如果管理员要改善搜索引擎的性能，最重要的就是了解索引当前的用法。管理工具箱中新添加的一个最有用的功能是查询报告。现有的查询报告功能可以快速查找有关查询量趋势、主要查询、点击率、零结果查询等信息。查询报告可以提供站点级和核心服务提供程序级的详细信息。图 6 显示了一个示例报告。可以将信息导出到 Microsoft Excel®，以做进一步的分析并透视数据。
图 6 MOSS 2007 中的查询报告
图 6 MOSS 2007 中的查询报告

安全和权限
就像我之前提到的一样，查询引擎会筛选结果，这样用户只会在列表看到他们拥有访问权限的文档。（在 SharePoint Portal Server 2003 中，用户可能会看到他们没有适当权限跟随的链接。）关于安全修整，需要注意的一点是 MOSS 2007 不会对爬网进行安全修整。您无法修整网站，因为 HTTP 协议无法读回访问控制信息。另外，MOSS 2007 不允许您对“业务数据目录”或“人员搜索”做安全修整。
MOSS 2007 遵循现有的访问控制列表 (ACL)，确保了索引中文档的安全。这是与其他搜索工具的一个主要区别。某些搜索引擎要求必须使用配置文件来手动设置文件权限，与之不同的是，MOSS 2007 允许您与当前权限保持同步。
索引可以迅速地在 ACL 中反映出针对单个文档的更改。例如，索引中当前存储有一张 Excel 电子表格，而文档的 ACL 进行了更改以具有限制性。管理员可以只对该文档进行重索引以及爬网，安全修整会立即执行（如有必要，文档可以从索引中彻底删除）。
另外，可以为单个文档分配唯一的权限，或者将其设置为从文档库或父目录中继承权限设置。从而可以更加简单地选择允许查看、编辑和保存文档的团体或个人。
身份验证和登录管理功能方面也有所增强。现在安全凭据缓存是可扩展的，从而使得 MOSS 有可能从第三方源和自定义代码加载项接受单一登录凭据缓存系统。另外，核心身份验证现在可以接受第三方系统。这两项增强功能构建于新的 ASP.NET 提供程序模型之上，该模型允许使用其他目录服务。

自定义
MOSS 2007 中具有许多用于修改用户界面的选项。可以使用许多已经用来修改网站的工具来自定义 UI。还提供了一些新工具，例如 Office SharePoint Designer，可利用它来建立“母页面”（提供了一种建立标记站点的简单方法）。图 7 显示了正在进行编辑的搜索结果页面。
图 7 自定义搜索结果页面的外观
图 7 自定义搜索结果页面的外观
现有的 MOSS 2007 提供了两个用于“搜索中心”界面的选项卡：所有站点和人员。您可以简单地添加其他选项卡，这些选项卡反映了用户搜索频率最高的不同类型的信息。例如，您可以为企业应用程序、数据库或者甚至于目录服务提供直接入口。甚至可以将这些选项卡与范围相互关联。这对于在特定内容上创建符合上下文的搜索选项卡来说非常方便。请注意，只支持搜索的版本不支持此搜索选项卡的自定义。

总结
如您所见，MOSS 2007 在企业搜索功能方面有非常显著的增强，可以使用户提高工作效率。有关详细信息，请参阅 Microsoft Office SharePoint Server TechCenter（英文）。

Matt Hester 是 Microsoft 跨美 (Microsoft Across America) 团队的 TechNet 演示者。若要实时观看他的演示，请访问 www.technetevents.com/mhester。若要查看他的博客，请访问 blogs.technet.com/matthewms。


 SharePoint: SharePoint 强大的命令行管理功能
SharePoint Todd Klindt

SharePoint 强大的命令行管理功能
概览:
  • 使用 STSADM 配置 SharePoint
  • 编写脚本完成日常管理任务
  • 高级 STSADM 操作

想想人们如何与 Windows 或 Microsoft Office 交互吧。一些用户是贪婪的捕鼠动物，使用鼠标指针在菜单和工具栏中导航，执行常见任务。另外一些喜欢使用
键盘，快速敲击着熟悉的按键和快捷键。对于任何给定的任务，几乎总有几种方法完成它。
事实上，图形界面很容易使用，但它对需要您重复相同事情的任务来说同样很麻烦。一些事情用键盘完成要更加简单。如果您做过任何 SharePoint® 管理工作，您可能已经经历过那种好像在图形界面前抓狂的事情。但实际上 SharePoint 提供了更强大的方法来完成任务。
管理 Windows® SharePoint Services (WSS) 和 Microsoft® Office SharePoint Server 2007 (MOSS) 的主要界面是基于 GUI 的 SharePoint 管理中心。但 SharePoint 也包含一个管理功能更强大的命令行工具。此工具 (STSADM.exe) 提供 SharePoint 管理中心的全部功能，但却拥有许多管理员渴望的命令行灵活性。在本文中，我将带给您使用 STSADM 管理 WSS 和 MOSS 的速成课程。我也会就如何配置您的环境给出一些提示，并讨论一些常用 STSADM 命令。我甚至会教您一些让您看来像个英雄的高级 STSADM 命令，如果出现使用它们的需要的话。

入门
如果您还没有偶然发现 STSADM，可能因为它隐藏得稍微深了点。在 Windows SharePoint Services 2.0 中，默认情况下它在 c:\program files\common files\microsoft shared\web server extensions\60\bin。版本 3.0 的默认位置是 c:\program files\common files\microsoft shared\web server extensions\12\bin。
为了简化此工具的访问操作，我使用两种不同的方法。第一种，我只是将该目录添加到我的 PATH 环境变量中。这样无论我在文件系统的哪个位置，都能使用 STSADM。但是，这样不总是行得通。我的第二种方法是，创建到 CMD.EXE 的快捷方式并将 STSADM 的位置设置为起始位置。为什么不将快捷方式直接指向 STSADM 呢？因为 STSADM 不是交互式的，所以那样行不通。结果，如果您将快捷方式直接指向 STSADM，您会看到它的用法说明很快显示，然后就退出了。
当您运行 STSADM 时，您需要是 Web 服务器上的本地管理员组的成员，而且您需要在本地执行程序。这意味着您不能使用 STSADM 来远程管理 SharePoint 服务器。
要查看使用 STSADM 您可以执行哪些操作，可在命令提示符中键入 stsadm.exe -help。在您对 SharePoint 应用了更新和修补程序之后一定要检查此列表，因为可能添加了新操作。在 go.microsoft.com/fwlink/?LinkId=77516 也提供了 stsadm.exe 操作的简易指南。

STSADM 基础
让我们首先来查看一些您可能用来调整现有 SharePoint 安装的命令。您可以使用 STSADM 来向 SharePoint 添加功能和修改配置设置。
STSADM 使用 -o 参数，后跟您要执行的操作。仅键入 STSADM -operationname 不会有效果。例如，如果您要向安装添加站点模板，您可以使用以下命令：
Stsadm -o addtemplate -filename <filename of the template>
-title <title of template> -description <description of template>
或者，如果您要添加 Web 部件包，可以使用这个命令：
Stsadm -o addwppack -filename <filename of the Web Part Package>
要查看任何操作的用法详细信息，只是传递该操作而不带参数，STSADM 就将告诉您它期望输入的内容。STSADM -help operationname 也会给出用法信息。
管理模板时，您可以使用 enumtemplates 操作以查看哪些模板已经添加，使用 deletetemplate 以删除任何已安装的模板。与此类似，对 Web 部件包也有相应的命令。您可以使用 enumwppacks 操作以列出每个虚拟服务器或 Web 应用程序已安装的 Web 部件包，使用 deletewppack 以删除任何已添加的部件包。
STSADM 也有两个处理 SharePoint 设置的命令：setproperty 和 getproperty。不带参数执行任何一个，将给出您可以查看或操作的属性列表。与 STSADM 本身类似，此列表也随更新和修补程序而发生变化。不过，有几个属性比其他属性常用得多。图 1 列出了安装 SharePoint 后您可能想要设置的一些属性，包括我听见 SharePoint 管理员询问的最常见属性。
Figure 1 设置有用的 SharePoint 属性 (Close Figure 1)

属性 | 功能
Alerts-enabled | 为虚拟服务器或 Web 应用程序打开或关闭警报。
Alerts-limited | 指定是否对用户在虚拟服务器或 Web 应用程序中设置特定数量的警报进行限制。
Alerts-maximum | 如果设置了警报限制，这是用户可设置的警报最大数量。
Days-to-show-new-icon | 添加到网站的项目旁边会出现“新”图标，此属性设置该图标出现的时间，例如，像通知邮件。
Job-immediate-alerts | 指定 SharePoint 查找要发送的即时警报的频率。SharePoint 2.0 的默认设置为五分钟。可在此调整该间隔时间。减少时间会增加 Web 和数据库服务器的负载，所以如果您更改了此属性，请注意这一点。
Job-daily-alerts | 指定每日警报的发送时间。SharePoint 2.0 默认设置为“22:00 到 06:00 之间”。如果有用户不在与服务器相同的时区内，您可能要调整此属性。
Job-weekly-alerts | 可能您看出了这里的规律。此属性设置每周警报的时间安排。
让我们来快速地看一看这些属性其中之一的使用。下面的命令将使 SharePoint 每 10 分钟就发出即时警报：
Stsadm -o setproperty -pn job-immediate-alerts -pv "Every 10 minutes"
注意我使用了 -pn 和 -pv 来代替 -propertyname 和 -propertyvalue。这些是您不想键入整个单词时可接受的缩写形式。同时注意，在本节讨论过的所有示例和命令，在 Windows SharePoint Services 的 2.0 和 3.0 版中都有效。

日常管理
日常的 SharePoint 管理工作非常轻松。对大多数 SharePoint 管理员来说，日常任务的主要部分由管理用户和站点两部分组成。STSADM 有一些操作来简化这些任务。
我将从站点和网站开始。为保持一致性，我使用的“站点”指站点集合，使用的“网站”指子站点（也称为子网站）。有些术语很难理解，但如果您与 STSADM 使用的保持一致，要找到您需要的命令会更容易。
如果运行大型的 SharePoint 安装，您可能会花费大量的时间来为用户创建新站点。我知道我自己就是重复地做着这些工作。可以在 SharePoint 管理中心轻松地完成创建新站点。但因为我如此频繁地执行这项任务，我发现使用 STSADM 来完成任务更快。
我使用 createsite 操作。它非常简单，有以下参数：
  • url <url>
  • ownerlogin <DOMAIN\name>
  • owneremail <someone@example.com>
  • ownername <显示名称>
  • lcid <语言>
  • sitetemplate <站点模板>
  • title <站点标题>
  • description <站点描述>
  • quota <配额模板>
可在命令提示符下键入 stsadm -help createsite 来显示这些信息（参见图 2）。在这九个参数中，必填字段只有 URL、ownerlogin 和 owneremail。
图 2 Createsite 参数
图 2 Createsite 参数
如果您经常创建站点，您可以在简化过程方面更进一步，方法是编写 STSADM 的包装脚本来自动执行任务。举例来说，要自动创建个人站点，可将下面的代码保存到名为 createpersonalsite.cmd 的文本文件：
stsadm -o createsite -url http://localhost/users/%1 -ownerlogin contoso\%1
-owneremail %1@contoso.com -sitetemplate usersite.stp
-title "Personal site for %1" -description "Personal site for %1" -quota "500 MB"
然后为用户 jsmith 创建一个站点，只需执行以下命令即可：
createpersonalsite.cmd jsmith
通过编写站点创建脚本，为您节约了大量打字工作，而且能保证所有新建站点是一致的。操作 createweb 在网站级别提供相同的功能。
在 Windows SharePoint Services 2.0 中，获得特定虚拟服务器上站点集合的详尽列表的唯一简单方法就是使用 STSADM。Enumsites 以 XML 格式列出特定虚拟服务器或 Web 应用程序上的所有站点集合。这可与数据视图 Web 部件联合使用，以轻松查看站点集合的列表。（有关详细信息，请参阅提要栏中的“使用数据视图 Web 部件”。）
STSADM 提供 deletesite 操作用于移除站点（正如您猜测那样）。您只需要提供 URL：另外，您也可将 -deleteadaccounts 传递给它，以删除 Active Directory® 里的帐户。在使用网站时，您应当使用 deleteweb 操作。
您也可添加、删除和枚举站点或网站的用户。相关操作分别是 adduser、deleteuser 和 enumusers。如果需要向站点大量添加用户，或如果您需要维持一份因审计目的而拥有站点访问权的用户列表，这些操作非常便捷。
当使用网站时，您可访问另外的操作，即 renameweb，它可让您更改网站的名称和 URL。例如，要将网站从“oldname”重命名为“coolnewname”，使用以下命令：
Stsadm -o renameweb -url http://localhost/oldname -newname coolnewname
在项目名称改变或业务部门重新调整时，这可是应急救生命令啊。在 Windows SharePoint Services 2.0 中存在一个大问题，即迁移网站的唯一方法是使用 SMIGRATE.exe，而它不会维持任何用户相关的设置，例如成员身份或警报。而在 Windows SharePoint Services 3.0 中，这已经不是大问题了，因为 STSADM 可以备份和还原网站和站点。

备份和还原
STSADM 的最佳用法之一就是备份和还原站点和网站。对于小型到中型安装，此功能是灾难恢复计划的基础。备份操作是一看就明白的，并且非常容易使用。只需告诉 STSADM 要备份哪个站点和写入备份文件的位置即可，像这样：
Stsadm -o backup -url http://localhost -filename site.bak
此操作将整个站点集合转储至 site.bak 文件。它包括全部站点内容，例如网站、文档版本、列表和用户。它不会备份任何站点定义和您在服务器的文件系统级别所做的更改。
虽然备份操作是很重要的，但也有一些意外的困难需要您特别注意。如果站点足够大，在备份过程期间可能会锁定内容数据库。这可能阻止用户访问该数据库中的任何站点，直到备份操作完成为止。Service Pack 已经对此问题进行了补救，但它仍然是随着站点规模增长需要注意的事情。进行备份和还原时，STSADM 会使用服务器的临时目录，所以请监视您的驱动器空间。
使用数据视图 Web 部件
您可将 enumsites 命令与数据视图 Web 部件联合使用，以轻松查看站点集合的列表。让我们看看如何实现吧。
首先，创建一个运行以下命令的计划任务：
stsadm –o enumsites –url http://localhost
>c:\inetpub\wwwroot\excludedsite\sites.xml
确保将 XML 文件写入到用 IIS 发布但不由 SharePoint 管理的目录中。然后使用 Microsoft FrontPage®（或 FrontPage 后续版本、Microsoft Office SharePoint Designer 2007）将数据视图 Web 部件添加到 Web 部件页，并将它指向 XML 文件的 URL。
数据视图 Web 部件提供诸如排序、筛选和分组之类的功能。您也可以使 URL 字段成为直接连接到站点的链接。相反，如果您需要网站的列表，则操作 enumsubwebs 提供站点集合或网站中的子站点的 XML 输出结果。

最后，注意 STSADM 备份对小型到中型站点效果不错，但随着规模显著增加此功能就不好用了。对于非常大的站点（几千吉字节或更大），备份和还原过程会相当慢。
还原站点也同样简单。STSADM -o restore 可将 STSADM -o backup 创建的文件写回 SharePoint 的站点。使用这个命令您有很大的灵活性：您可以将站点还原到它的原始位置（例如，如果站点被错误删除了），您也可以将它作为相同虚拟服务器上的不同站点来还原（也许如果您要在某个站点上测试还原过程，而不想冒破坏数据的风险），或者您可以将站点还原到完全不同的服务器或虚拟服务器上。
还原到不同的站点或服务器使得进行单个文档恢复要更加简单一些。如果您备份了站点而用户需要还原一个文档，您不需要还原整个站点。那样会丢失从备份存储日以来对站点所做的全部更改。作为替代，您只需要将站点还原到不同的 URL，然后抓取需要的文档，并将其保存回原始站点。
在 Windows SharePoint Services 2.0 中，STSADM 有一个相当严重的限制。备份时，它只能处理站点，而不能处理网站。管理员们表达了他们的不满，而 Microsoft 也回应了。在 Windows SharePoint Services 3.0 中，备份和还原操作现在可处理网站了。它还添加了两个新命令：import 和 export。
要导出网站，请使用下面的简单命令：
Stsadm -o export -url http://localhost/web -filename backup.dat
Export 有方便的选项，包括 -versions 开关。这允许您通过限制备份哪些文件版本来决定备份文件大小。
要将网站导入回服务器，请使用下面的简单命令：
Stsadm -o import -url http://localhost/web2 -filename backup.dat
如果您的站点足够大，备份文件可能分成多个部分。在这种情况下，将 STSADM -o import 指向第一个文件，它会自动抓取后续文件。

专家操作
现在您已经习惯了 STSADM，我想向您展示几个用来摆脱束缚的操作。第一个是新添加的操作，称为 migrateuser。版本 2.0 不会将自身与 Active Directory 同步。如果帐户被重命名，它不再能登录到 SharePoint。过去，也没有办法将用户访问权从一个域用户迁移到另一个域用户。在 Windows SharePoint Services 2.0 Service Pack 2 (SP2) 之前，您必须从每个网站删除用户并手动添加新帐户。
SP2 引入了新的 API，而 STSADM 利用了它。如果帐户 jsmith 重命名为 jjones，您可以使用以下命令：
Stsadm -o migrateuser -oldlogin domain\jsmith -newlogin domain\jjones -ignoresidhistory
因为不是真正迁移帐户，所以您可以忽略 Windows 的安全 ID (SID) 历史记录。注意此命令不需要 URL。它在整个内容数据库中做出更改，而与站点或网站无关。
另一个可使您摆脱束缚的操作是 unextendvs。如果不想 SharePoint 渲染虚拟服务器或 Web 应用程序，您可取消扩展它。通常，您会从 SharePoint 配置分析器中完成这项任务。但是，在 Web 场中，SharePoint 配置分析器需要服务器都处于相同的修补程序级别。有可能出现服务器与场中剩余服务器脱离同步的情况，因此它不会在 SharePoint 配置分析器中获得“取消扩展”选项。但使用 STSADM 的以下命令将取消扩展您的虚拟服务器：
Stsadm -o unextendvs -url http://localhost
一旦服务器不再位于 Web 场中，您可以执行需要的维护工作。
关于 Web 场，为了易于管理，您可能想要全部的服务器都在相同端口上使用 SharePoint 配置分析器。端口是在安装 SharePoint 时随机生成的，但 STSADM 包含将端口更改为指定端口的操作：
Stsadm -o setadminport -port 1026
这将进行所有必要的数据库更改，更改 IIS，并调整管理工具中指向 SharePoint 配置分析器的快捷方式。

结束语
Windows SharePoint Services 是功能强大的解决方案，而它需要强大的管理。STSADM 则提供了完成 SharePoint 管理工作（包括自动配置和普通日常任务）的方法。实际上，有时它是完成任务的唯一方法。

Todd Klindt 是一位供职于 UGS 的系统分析师，他在 UGS 每天都与 SharePoint 打交道 — 而且是领着工资做这些的。他也是一位 Windows SharePoint Services MVP 和宝瓶座的人。


 SharePoint: 在工作时使用 Wiki
SharePoint Mauro Cardarelli

在工作时使用 Wiki
概览:
  • 什么是 wiki？
  • 在 SharePoint 中构建 wiki
  • 编辑并跟踪更改

wiki 的概念自诞生到现在已经过约 10 多年的风风雨雨。wiki 是一个夏威夷地方用语，意思是“快速的”。简单地说，它是一个在线目标，用户只需通过浏览器就可以在那里自由地创建或编辑
网页内容。其目标是提供一个空间，虚拟社区的成员可以在其中编辑任何页面，同时任意引入、更改或删除内容，包括先前作者所创建的任何内容。博客的设计宗旨在于方便结构化程度更高的知识的交流和一对多的沟通，而与之不同的是，wiki 所注重的是协作性更高的用户体验。
最近人们对称之为 Web 2.0 的下一代联机工具给予了极大的关注，预测该工具会降低内容创建方面的壁垒，从而允许用户同时扮演联机信息的生产者和使用者。这种现象不仅出现在 Internet 的世界中，而且也存在于公司防火墙之内。您应该将其视为 Enterprise 2.0 工具，这些工具可以使所有员工更加简单地创建内容。诸如博客和 wiki 之类的技术将会帮助公司在思维方式、存储以及重复利用公司知识方面取得很大的成功。
Microsoft 通过引入 Microsoft® Office SharePoint® Server (MOSS) 2007（即流行的 SharePoint 技术的第三个版本）来帮助实现这项下一代的功能。MOSS 2007 具有扩展的协作和通信功能，其中包括支持博客和 wiki 的创建。这篇文章介绍了如何使用 MOSS 2007 开始构建 wiki。

入门
如果您使用过 SharePoint Portal Server 2003，站点模板的使用方法其实与之非常相似。站点模板为特殊类型的页面（如小组、会议或社交活动等）布局提供了框架，其中为特定内容预设了占位符。MOSS 2007 通过引入新的模板类型集合来扩展站点模板的用途，其中一种用途就是支持 wiki。
图 1 显示了用于创建 SharePoint 站点的“新建 SharePoint 站点”页面。请注意，模板列表中有一项可用于创建“Wiki 站点”。通过选择此模板，您可以方便快捷地创建您的首个 wiki。请看一看图 2 所示的新建 wiki 的默认呈现，这就是 wiki 的结构，此默认页面就是您的主页，其上的所有内容均可编辑，您的虚拟社区中经过正确授权的用户可以修改此页面或创建新的页面。
图 1 为新站点选择 Wiki 模板
图 1 为新站点选择 Wiki 模板
图 2 有待编辑的新 SharePoint Wiki
图 2 有待编辑的新 SharePoint Wiki
在进行下一步之前，我们先回过头来讨论一下如何将 wiki 介绍给用户。我前面提到，wiki 在 Internet 上或通过第三方工具已经存在了一段时间。但在很大程度上，wiki 的使用一直是高度专业化的，且仅靠口头传播，发展非常缓慢。MOSS 2007 通过为所有 intranet 用户提供 wiki 功能，可以泰然自若地扭转乾坤，这套系统的确强大，甚至有些惊世骇俗！您如何向没有任何 Internet 知识的非技术性同事阐述 wiki 的价值？您可以告诉他们，所谓 wiki，就是在一个用户可以畅所欲言的环境中，鼓励用户就各种意见和观点进行创造性交流的工具。该工具可以启用内容协作，但功能远不止这些。wiki 的最终产物不是一份文档或者一篇文章，而是一本永远也不需要结尾的书，您可以根据需要随时进行修改。
好了，现在重新投入工作。对于首次使用 wiki 的用户，可通过“如何使用此 Wiki 站点”超链接获取联机指导。默认的 wiki 模板随附了足够的文档，可以使新用户使用起来称心如意并迅速上手。

Wiki 的工作方式
每个 wiki 页面的右上角都设有操作按钮。如果您单击“编辑”按钮，将会被定向到与内容编辑相关的页面。图 3 显示了一个示例。所有编辑操作均可在浏览器中完成，不需要使用如 Microsoft Word 之类的外部工具。并且编辑操作都是在联机状态下实时（保存后）进行的。此外，根本不需要任何 Web 设计或开发技能。在编辑界面中，只使用标准按钮即可创建完全的丰富文本（粗体、颜色、项目符号或图像）。用户只需在编辑模式下打开现有页面，添加或修改内容即可。就是这样。
图 3 完全在浏览器中编辑 Wiki 内容
图 3 完全在浏览器中编辑 Wiki 内容
在内容日新月异的环境中，如何管理所进行的更改？您可能觉得没必要管理所有的内容，但或许需要一些方法来跟踪更改并维护版本历史记录。MOSS 2007 可以让您如愿以偿。图 4 显示了单击“历史记录”按钮后出现的标准页面。您将在中央看到所有的文本编辑都已被跟踪。并且将在左边看到更改的历史记录，每次进行的更改都会被跟踪。社区拥有审阅、跟踪甚至回滚更改的完整功能。这的确是一个非常强大的概念。当您构建以及更改 wiki 时，MOSS 2007 可以跟踪您的一举一动。
图 4 持续跟踪 Wiki 条目的更改
图 4 持续跟踪 Wiki 条目的更改
正如前面所说，wiki 不是一个网页，而是无限多页面的集合。作为 wiki 社区的成员，您可能会决定介绍新观点或论点。您可能不希望向现有页面添加文字，而更倾向于另开一个新页面。MOSS 2007 通过可方便地添加 wiki 页面实现了这一操作。只需单击“新建”就可以创建一个新的 wiki 页面。然后开始添加内容，这样就可以了。

总结
MOSS 2007 可能没有引入 wiki 的概念，但是鉴于其广泛的可用性，它却切实地提高了 wiki 的吸引力。Wiki 可以使组织工作人员的协作方式发生变革，使他们摆脱文档的束缚。Wiki 倡导非结构化的思维方式和更为广泛的协作，可以很好地融入与 Enterprise 2.0 基本原理相关的更为广泛的概念之中。Wiki 还是强有力的驱动因素，允许所有用户参与工作，使其不但要顺应趋势，还要引领新的发展潮流。

Mauro Cardarelli 是 Jornata 的一位经营合伙人，Jornata 是总部位于波士顿的一家 IT 咨询服务公司。他的职责包括技术推广、体系结构设计和软件开发。他的联系方式如下：mauro.cardarelli@jornata.com。


 编辑视角: 行业往往会
编辑视角

行业往往会 经历一些震撼性的变革，这不仅是技术上的，而且还是政治、流行时尚等方面的变革。数周之前，我在拉斯维加斯举办的 Windows Connection 会议上发言时曾考虑过这个问题。回想五年前的十一月份，那时我正在参加 Comdex（国际电脑经销商博览会），这是一个吸引了全世界各个行业的技术购买者和观摩者的大型展会。但这个稳定发展了近二十年的展会几乎在一夜之间便销声匿迹。因此我没有去参加为公众所广泛关注的大型展会，而是出席了一个覆盖面较窄且目标对象是少数开发人员和 IT 产品的展会，并在会上发言。这次在相同的地点又遇到了相同行业的目标受众，但所有的与会人员均受益匪浅。
我的发言内容都是关于技术编写的，其中包括编写的方式、场合及原因。我们行业的变革不但反映在 Comdex 的历史中，而且在技术交流的领域中也有所展现。五年前我曾举办过类似的会议，其内容都是关于杂志的。那时几乎没有人听说过博客，社区站点只是一个遥不可及的影子，但现在已梦想成真。在过去的五年当中，我们经历了文字信息传播方式的持续变革，并且规模空前。
当然，这对我们而言祸福参半。不同的交流方式适用于不同的交流目的。人们可以自发地将自己的观点在网上公布，而杂志上刊载的观点一般都经过文字编辑和学术修正。您可以撤下一篇博客文章，但是无法将这种个人意志强加于人，让人扯下一页杂志内容。
不管怎样，我所讨论的这次变革总是事出有因的。许多读者对我们的杂志提供了反馈意见，作为回应，我们正在扩充专栏的阵容。在这一期杂志中，我们会为您提供第一期的“网络专家”，它是一个非常流行的 TechNet 网上专栏，现在已经拥有了打印页面。我们还收到过来自您的邮局主管的邮件，同时清楚地认识到 Exchange Server 2007 必将成为瞩目的焦点，因此我们将发布定期专栏 Exchange Queue & A。（毫无疑问，这真是个漂亮的名称！）
如果您想了解杂志中所涉及的 Microsoft 技术，请给我们发送邮件。为客户服务的最佳方式就是予其所需。—Joshua Trupin

向以下 Microsoft 技术专家致以衷心感谢：Puneet Arora、Jeff Bienvenu、Nino Bilic、Eric Broberg、Ramesh Chinta、Matt Cohen、Michael Dalton、George Irimescu、Bryan Jeffries、Dave Kong、Vijay Krishna、Rob Lefferts、Lawrence Liu、Bob Ma、Manu Namboodiri、Joel Oleson、Arpan Shah、Troy Starr、James Sturms、Jim Truher 和 Blaine Young。


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

服务器管理
Windows Server 2003 Resource Kit Tools
go.microsoft.com/fwlink/?LinkId=77796
Microsoft Windows Server 2003 Resource Kit Tools 是包含 100 多种实用程序的超值工具集，可以帮助您组织和自动化管理任务。其中包括从 Active Directory® 工具到网络故障排除实用程序，以及 CD/DVD 映像刻录程序在内的各种工具。
自定义原因编辑器 (Custom Reason Editor, custreasonedit.exe) 是一个组织“关闭事件跟踪程序”的绝佳工具。作为 Windows Server® 2003 的组件，“关闭事件跟踪程序”在事件日志中记录了系统关闭的原因。同时，使用“自定义原因编辑器”可以创建带有可配置参数的自定义列表，默认情况下，这些参数将覆盖已启用的内置原因。可使用此工具通过保持事件项的逻辑性和组织性，方便地合计和识别导致关机的故障过程、应用程序或系统状态。
DNS 解析工具 (DNS Resolver Tool) 是一个命令行实用程序，可模拟 SMTP 服务的 DNS 解析执行，并可以显示与您指定为命令参数的 DNS 查询状态有关的消息。该实用程序可运行于安装有 SMTP 服务的 Windows Server 2003 主机上，并返回可在批处理文件中使用的错误代码。CDBurn.exe 和 DVDburn.exe 是可以从 ISO 映像刻录 CD 和 DVD 的命令行实用程序，并为带有 /Erase 开关（用于在应用新的磁盘映像之前清除媒介）的 RW 媒介提供有限的支持。例如，可将这些实用程序用于在基础结构中使存档过程自动化。
Windows Server 2003 Resource Kit
Windows Server 2003 Resource Kit
如果您需要验证帐户是否已成功锁定，可以使用帐户锁定状态 (Account Lockout Status) 工具的命令行和 GUI 选项方便快捷地完成。该工具可以查询每个可连接域控制器，并检查目标用户的帐户状态。强力文件复制实用程序 (Robust File Copy Utility)，即 Robocopy.exe，也许是用于自动化的最佳工具，为您提供了移动或复制文件的各种选项。该工具可使用通配符甚至文件属性来指定复制对象，并且可选择性地将复制设置为递归。可将此工具用于同步，并设置为删除已从源目录删除的目标文件或目录。
我喜欢的另一个实用程序是 Tail (tail.exe)，这是一款非常简单的工具，类似于 Linux/UNIX 实用程序，可以显示文件中的最后 N 行，并在新行添加后刷新显示。这是一种调试或监控写入日志文件的任务的好方法。
Time It (timeit.exe) 可用于记录命令的时间，并将数据存储到自身的数据库文件中，用于测试管理任务实际所需的时间。
您应注意到这些工具没有本地化，都以英语编写和测试，并可能在执行时“产生不可预见的结果”。请确保在生产环境中使用这些实用程序之前，在您的非英语系统中进行测试。
价格：免费下载。

跟踪问题
ASP.NET Issue Tracker
www.ASP.NET/StarterKits/WhitePapers/Issue%20Tracker%20Whitepaper.htm（英文）
在我看来，一款优秀的应用程序应该拥有以下两个特点：免费和自定义。ASP.NET Issue Tracker 通过 ASP.NET 在线开发者社区提供，同时具备了这两个特点。专门设计为学习在 ASP.NET 1.1 框架下进行 Web 应用程序编程的初学者工具包，Issue Tracker 是一款简单而实用的工具，用于跟踪项目相关的问题。
界面简单明了，您可以轻松地创建项目、用户和问题。该应用程序支持带有基于角色权限的多用户模式，可避免问题泄漏。您还可以创建各个项目的自定义问题类别以及各种自定义数据字段。可为任务分配状态、优先级和里程碑，以帮助组织项目。
还有一个绝妙的功能，就是在项目创建时，您可以为各个项目指定自己的状态代码、优先级和里程碑，并分配一个代表它的图像。所有代码均可下载，因此如果您有 .NET 开发人员的帮助，或者对现有的代码非常熟悉，就可以利用初学者工具包开发所需的自定义功能。
价格：免费。

系统监控
NetHealth Sentinel Professional
www.nethealthsys.com
网络和系统监控非常重要，我一直在寻找能够远程监控机器运行状况的应用程序。NetHealth Systems 推出的 NetHealth Sentinel Professional 做到了这一点。
作为一款基于代理的解决方案，Sentinel Professional 可以帮助您深入了解所监控的主机。该应用程序分为以下四个组件：Admin Server、Admin Console、Connection Manager 和 Remote Agent。Admin Server 用于执行计划任务、存储配置信息并通过 Connection Manager 收集警报。
Admin Console 是 Admin Server 的图形界面，可用于查看和配置所监控的系统以及设置计划任务或事件。Connection Manager 用于收集来自 Remote Agent（驻留在所监控系统上的主机代理）的所有数据。Remove Agent 作为 Windows 服务运行，并通过安全连接与 Connection Manager 进行安全通信。每个 Remote Agent 可以配置为向一个或多个 Connection Manager 发送警报。
NetHealth Sentinel Professional
NetHealth Sentinel Professional
一大优点是特定监控组中所有机器的事件聚合。友好的 GUI 还允许从“事件”视图中拖放数据列，按项进行分组。
应用程序还提供了“Vital Signs”窗格，给出了要监控的统计信息的大概介绍。默认情况下，您可以看到 CPU、磁盘和内存利用率，但您可以通过“监控”选项卡添加所选的计数器。
NetHealth Sentinel Professional 还包括一个基线功能，可以设置机器的“正常”操作级别，在操作超过所设定的基线值时就会触发警报。
价格：一个 10 客户端访问许可证为 495 美元。

数据加密
TrueCrypt
www.truecrypt.org
TrueCrypt Foundation 推出的 TrueCrypt 是一款免费的开源“动态”加密工具，允许使用正确的密码或加密密钥解密试图从加密卷读取的信息，或加密试图在内存中写入到加密卷的数据。但是别担心，您的卷永远都不会处于解密状态。只有在该应用程序解密内存中的数据时进行内存转储，入侵者才可能找到您试图保护的信息。通过关闭系统的内存转储可以非常容易地避免这种情况，更不必说在任何时刻您的内存中都只有很少一部分解密数据。
该应用程序支持虚拟卷和物理分区或设备。虚拟卷被作者称为“文件容器”，可使用各种文件扩展名或不用任何扩展名，因此您的敏感数据对于窥视者将显示为随机数据；并且没有 TrueCrypt 的“文件签名”。
TrueCrypt
此外，您可在“便携模式”下运行，这意味着可在 USB 钥匙上连同应用程序文件一起创建文件容器，并随身携带加密数据，而无需在主机系统上安装 TrueCrypt 应用程序。但是，由于其特点是通过内存进行读写，因此当您在某系统上使用便携磁盘时，就需要拥有该系统的管理员权限。
TrueCrypt 还具有一个用于设置便携磁盘的简单向导。这是一个非常好的办法，您可以随身携带系统管理信息，并且无需担心窥视者看到敏感的公司数据。
为了更高层次的安全性，您还可以使用 TrueCrypt 在文件容器中创建隐藏卷，因此即使入侵者装载了外部卷，也不会发现磁盘上存在一个隐藏的内部卷。每个卷都使用随机数据初始化，使得驻留在外部卷“可用空间”中的隐藏卷很难被检测到。
TrueCrypt 可使用 AES、Blowfish、CAST5、Serpent、Triple DES、Twofish 和这些算法的一些组合来加密您的数据。该应用程序使用 LRW 操作模式进行加密，该模式成为基于扇区的存储加密的 IEEE 标准。对于报头散列算法，可使用 Whirlpool、SHA-1 或 RIPEME-160，这时应用程序就不会在系统上存储任何无用数据作为附加保护层。该应用程序支持 FAT12、FAT16、FAT32 和 NTFS 文件系统，但同其他基于 Windows 的扇区加密实用程序一样，它不能加密 Windows 引导分区。
价格：免费。

书评
Hacking Web Services
www.charlesriver.com
Shreeraj Shah 所编写的《Hacking Web Services》（Web 服务研究）(Charles River Media, 2006) 一书，对于开发、部署和支持 Web 服务的人员而言具有很高的价值。本书的组织结构非常有条理，其内容是关于 Web 服务及其组件技术的常规安全。它颇有见地地详细介绍了在您的基础结构和整个开发实践中进行安全保护的各种信息。
本书以 Web 服务相对深入的介绍开始。一篇题为“延迟的后果”(The Consequences of Procrastination) 的案例研究展示了优先安全过程的威力和反应系统的损失。标题为“Web 服务扫描和枚举”(Web Services Scanning and Enumeration) 的章节讨论了如何使用 wsChess 来配置和部署 Web 服务。其中 wsChess 是 Net-Square 所推出的基于 .NET 的 Web 服务安全工具包，详情请访问 net-square.com/wschess/index.shtml。
本书附带一张实用程序 CD，包括一个称为 SOAPWall 的基于 .NET 的示例应用程序。介绍了如何在 .NET Web 服务中阻止注入字符和缓冲区溢出。此外，CD 还提供了不同类型 Web 服务攻击的演示。
价格：49.95 美元。
Shreeraj Shah 所编写的《Hacking Web Services》（Web 服务研究）(Charles River Media, 2006) 一书，对于开发、部署和支持 Web 服务的人员而言具有很高的价值。本书的组织结构非常有条理，其内容是关于 Web 服务及其组件技术的常规安全。它颇有见地地详细介绍了在您的基础结构和整个开发实践中进行安全保护的各种信息。
本书以 Web 服务相对深入的介绍开始。一篇题为“延迟的后果”(The Consequences of Procrastination) 的案例研究展示了优先安全过程的威力和反应系统的损失。标题为“Web 服务扫描和枚举”(Web Services Scanning and Enumeration) 的章节讨论了如何使用 wsChess 来配置和部署 Web 服务。其中 wsChess 是 Net-Square 所推出的基于 .NET 的 Web 服务安全工具包，详情请访问 net-square.com/wschess/index.shtml。
本书附带一张实用程序 CD，包括一个称为 SOAPWall 的基于 .NET 的示例应用程序。介绍了如何在 .NET Web 服务中阻止注入字符和缓冲区溢出。此外，CD 还提供了不同类型 Web 服务攻击的演示。
价格：49.95 美元。

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

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

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


 实用工具特别推荐: Internet Explorer 管理工具包
实用工具特别推荐
Internet Explorer 管理工具包
Lance Whitney
下载这篇文章的代码: 实用工具特别推荐：Internet Explorer 管理工具包 7 (KB)

您的 CIO 要求您在公司的所有机器上都安装 Internet Explorer 7 的最新版本。此项工作时间紧，预算小，但工作量却很大。这时就需要通过自定义安装包将相同的功能和设置应用到所有用户。同时也需要根据情况的变化随时更改这些设置。
此外，还需要锁定 Internet Explorer®，以防止用户修改任何设置。如何才能方便快捷地创建和交付此类 Internet Explorer？
Microsoft 提供了 Internet Explorer 管理工具包（简称为 IEAK），可帮助您实现这一目的。这个免费的配置工具旨在帮助 IT 管理员、开发人员、ISP 和其他用户创建 Internet Explorer 的自定义安装包。实际上，Yahoo! 使用 IEAK 7 的测试版创建了自定义的 Internet Explorer 7 安装包，可从 Yahoo! 网站上下载该安装包。
使用 IEAK 创建的 Internet Explorer 7 版本只需要包括您所指定的功能和选项。可启用特定的安全设置并锁定所有不希望用户访问的控件。
当然，部署 Internet Explorer 后，拥有 Active Directory® 的用户可以通过组策略来控制和更新浏览器设置。也可以根据自己的需要使用 IEAK 来管理 Internet Explorer 设置的各种数组。
与以前的版本相比，IEAK 7 的用法更加简单，用户可很轻松地通过其提供的简单图形界面创建自己的 Internet Explorer 安装包。按照屏幕上显示的分布指南就可以选择要合并到自己的版本中的功能和选项。
IEAK 的新版本在前一个版本的基础上做了一些更改，增减了某些选项。现在可把默认 RSS Web 源添加到自己的 Internet Explorer 版本中，指向多个主页和搜索页，并且增加对反网页仿冒过滤器的支持。也可以把 Microsoft® Windows® Malicious Software Removal Tool 设置为运行和更新。不过无法再使用 IEAK 自定义 Outlook® Express 和 Windows Media® Player，因为 Internet Explorer 7 中不包括这两个应用程序。
可为下列 32 位或 64 位平台创建 Internet Explorer 安装包：带有 Service Pack 2 (SP2) 的 Windows XP、带有 SP1 的 Windows Server® 2003 或基于 x86、x64 或 Itanium 的 Windows Vista™。运行 IEAK 7 前，必须在用来创建安装包的 PC 上安装 Internet Explorer 7。为保证兼容性，应该在运行 IEAK 的计算机和要应用安装包的计算机上安装相同的操作系统。
在本专栏中，我们将讨论如何使用 IEAK 创建 Internet Explorer 7 安装版本以及如何维护或更新浏览器设置。

如何获取 IEAK 7
可从 microsoft.com/technet/prodtechnol/ie/ieak7 免费下载 IEAK 7 的最新版本。此外，该页面还提供关于 IEAK 的文档和发行说明，值得一看。
通过下载的 ieak.msi 文件安装 IEAK 7 时，需要根据角色（ISP、内容提供商或开发商）或者通过公司 Intranet 来选择许可证类型。所选择的角色不同，您所看到的屏幕和构建的安装包类型也会发生变化。因此，如果正在创建用于企业环境的版本，请务必选择用于公司 Intranet 的角色和许可证。安装 IEAK 后，“开始”菜单上会创建一个名为 Microsoft IEAK 7 的“程序组”，它包含三个项目：“IEAK 帮助”、“IEAK 配置文件管理器”和“Internet Explorer 自定义向导”。
可使用“Internet Explorer 自定义向导”构建安装包。在设计安装包的过程中，根据屏幕上显示的向导能很轻松的完成每一步操作。那么，有什么注意事项呢？是的，要了解如何配置每个选项，需要精通 Internet Explorer 的功能和控件。幸运的是，通过 IEAK 7 可轻松实现这个目的。和以前的版本相比，该工具的内置帮助信息更详细、更容易理解。可点击各个“自定义向导”屏幕上的“帮助”按钮来了解屏幕的设置和选项。通过“IEAK 帮助”快捷方式或 C:\Program Files\Microsoft IEAK 7 下的 IEAKHelp.chm 文件可访问整个 IEAK 帮助文件。建议在创建自己的版本前，先阅读相关文档以了解每个组件并计划所需的选项。
使用“自定义向导”创建安装包的过程分为下列五个不同的阶段：
  1. 收集信息
  2. 指定安装参数
  3. 自定义安装经验
  4. 自定义浏览器
  5. 附加自定义
Microsoft 在 IEAK 7 中减少了必须处理的屏幕的数量，因此该创建过程比以前版本中的创建过程简洁明了。不过，为安装包选择选项时，“自定义向导”仍然会弹出很多屏幕。许多屏幕所包含的内容都很容易理解，因此本专栏中不会介绍每个屏幕，而只是介绍如何访问较为复杂的屏幕的“帮助”信息。但是，我会在本专栏中简要说明每个阶段中所执行的操作，并且讨论一些比较重要的屏幕上的内容。
阶段 1 收集信息。本阶段的任务是决定安装包的存储位置、运行安装包的操作系统和平台、Internet Explorer 的分发方式以及自定义的选项。在此阶段中，可从 Internet Explorer 7 的三种分发方法中任意指定一种，如图 1 所示，这三种方法是“文件”安装、CD-ROM 和只用于配置或只用于标记的安装包，它们所执行的操作分别为：创建带有特定文件（这些文件组成您的版本）的平面目录结构；创建安装磁盘（便于远程用户使用）；把自定义的设置应用到 Internet Explorer 7 的现有安装。如果已经安装了 Internet Explorer 7，那么可使用 Windows Vista 的最后一个选项并且对其进行自定义。
图 1 指定分发方法
图 1 指定分发方法
此阶段中的另一个任务是指定自己的版本中所使用的语言。可以为每一种需要支持的语言创建 Internet Explorer 7 的本地化版本。
阶段 2 指定安装参数。本阶段的任务是下载 Internet Explorer 的最新组件和更新以构建自己的安装包。
阶段 3 自定义安装经验。本阶段的任务是指定用户可采用的安装模式。这些模式为交互模式（用户可在安装过程中选择自己所需的安装选项）、无操作模式（用户可看到安装的执行过程，但是不能自行选择安装）和完全无提示模式（安装过程完全在后台运行，无需用户交互）。如果您正在构建 CD-ROM，那么本阶段会提示您为 CD 创建起始页和其他元素。
阶段 4 自定义浏览器。本阶段的任务是：自定义 Internet Explorer 的外观；设置主页、支持页和收藏夹的 URL；配置代理设置；建立浏览器的隐私和安全设置。如果不想使用组策略，也可在本阶段指定自动配置文件或 Internet 设置 (INS) 文件的名称和位置以管理浏览器设置。
INS 文件就是一个文本文件，它包括主页、收藏夹、安全选项以及代理配置等所有主要的浏览器设置。可以将该 INS 文件存储在内部 Web 服务器上，然后每台 PC 都会从该文件获取其浏览器设置。只需编辑 INS 文件就可修改任何设置，随后用户会自动接收到这些更改。此外，还可以指定更新和应用这些设置的频率。
也可在本阶段建立自己的代理服务器，方法是手动输入它们的 IP 地址和端口号，或者使用自己的代理信息来创建和指定 JScript® (JS)、JavaScript (JVS) 或代理自动配置 (PAC) 文件的名称。“IEAK 帮助”中提供了可用来创建这些文件的代码示例。
如果正在 Windows Vista 中设计 Internet Explorer 7 安装包，或者正在设计用于 Windows Vista 的 Internet Explorer 7 安装包，那么可启用保护模式。只需在参考 PC 上的 Internet Explorer 7 中打开保护模式，然后把该设置导入 IEAK 即可。
阶段 5 最终的附加自定义。本阶段的任务是设置版本的用户策略和安全限制。可以有选择地锁定某些不希望用户查看或修改的单个设置。图 2 显示了“附加设置”屏幕，这些屏幕上展示了五种可启用或禁用的控件。这些屏幕上的设置来自 Internet Explorer 7 的五种 ADM 模板，在向导的阶段 2 中下载了最新的浏览器组件后就会安装这些模板。如果使用了组策略，则可跳过此阶段。否则现在就可配置这五种类别的选项。因为这些类别直接来自 ADM 模板，所以也可通过在文本编辑器中编辑每个 ADM 文件修改这些类别，并且把修改后的类别添加到自己的自定义控件中。ADM 文件位于 C:\Program Files\Microsoft IEAK 7\pol-icies 的子目录下，根据 Windows 操作系统和平台的不同，该文件所属的子目录也会有所差别。图 3 中简要介绍了这五种类别。
Figure 3 附加设置屏幕中的类别 (Close Figure 3)

类别 | 说明
控件管理 | 可通过该类别启用或禁用特定的 ActiveX 控件。该类别中的设置只会应用到 Windows XP 和 Windows Server 2003，而不会应用到 Windows Vista。
自定义设置 | 该类别显示安全设置。可根据区域（Internet、Intranet、受信任的站点或受限制的站点）来启用或禁用特定的控件和操作。
公司设置 | 在本类别中，可设置浏览器缓存的大小和参数。
公司限制 | 可在此处锁定 Internet Explorer 中特定的控件和屏幕，这样用户就无法看到它们。这些设置只会应用到 Windows XP 和 Windows Server 2003，而不会应用到 Windows Vista。
Internet 设置 | 该类别提供“自动完成”、“显示大小”的选项，在 Internet Explorer 的“Internet 选项”菜单中会显示这些高级设置。
图 2 自定义 Internet Explorer 功能
图 2 自定义 Internet Explorer 功能

检查版本
完成“自定义向导”中的操作后，您就已经在阶段 1 中指定的目录下或默认目录 c:\builds 下创建了安装包。该目录下包含目标目录，IEAK 将当前日期用作其目录名，例如在 2007 年 1 月 1 日时把该目录命名为 01012007。在目标目录下还有两个子目录路径，其中一个名为 INS，另一个通过所选的分发方法的名称（如 FLAT、CD 或 BrndOnly）来命名。
INS 目录用作工作区或存储库，可在构建安装包时对自定义进行跟踪。该目录中的一个名为 install.ins 的文本文件会存储所有创建的设置。如果重新启动“自定义向导”，那么系统会自动从该文件中提取先前的选项。
FLAT、CD 或 BrndOnly 目录存储实际的安装文件。这三个目录下都有一个根据操作系统和平台来命名的子目录，例如根据 32 位的 Windows XP 或 Windows Vista 命名的 WIN32 子目录。最后一级子目录是根据为安装包所选择的语言来命名的，例如，如果选择英语，那么子目录名为 EN。综上所述，如果在 2007 年 1 月 1 日使用 Flat 分发模式创建了用于 32 位的 Windows 系统的安装包版本，并且把该版本的语言设置为英语，那么版本的目录路径就是 c:\builds\01012007\FLAT\WIN32\EN。
要查找使用 Flat 分发方法创建的安装文件，可顺着 FLAT 目录结构向下查找，直到在语言子目录中找到 IE7Setup.exe 文件。这是一个自解压缩的可执行文件，它包含所有构成版本的二进制文件和配置文件。只需要该文件就可以部署 Internet Explorer 7 安装包（安装时不需要 INS 目录中的文件）。可以将此文件单独复制到分发服务器上以测试安装包，一切准备妥当后，就可以为用户部署该安装包了。
如果当初选择了 CD-ROM 分发，则必须把 CD 目录中的所有内容都复制到自己的 CD 中。其中包括自动生成的 autorun.inf 文件，以及带有可执行文件的目录（这个可执行文件用来从 CD 中安装 Internet Explorer）。
如果构建的是只用于配置或只用于标记的安装包，可顺着 BrndOnly 目录结构向下查找，直到在语言子目录中找到 Setup.exe 文件。这是一个自解压缩的可执行文件，可把该文件复制到分发服务器以用于部署。

管理您的设置
Internet Explorer 7 安装包中包括您最初所需的所有功能和设置。如果需要更改选项，那么应该执行什么操作？您有两种选择。如果拥有 Active Directory，则可以使用组策略更新浏览器设置。如果没有 Active Directory，也可以使用 IEAK 所提供的工具（称为配置文件管理器）来修改浏览器设置。首先大致了解一下组策略。
使用组策略。组策略支持所有的浏览器设置，因此用它来管理 Internet Explorer 效果最好。在 IEAK 和 Internet Explorer 以前的版本中，要求必须将 ADM 文件和 Internet Explorer 维护 (IEM) 文件添加到组策略控制台中，以集成 Internet Explorer 的所有设置。不过对于 Internet Explorer 7 而言，Windows XP SP2 和 Windows Vista 包括了所有必需的组策略设置，用于维护和更新浏览器。
如果打开组策略编辑器 (gpedit.msc)，就会在“管理模板”|“Windows 组件”|“Internet Explorer”下找到 Internet Explorer 7 所必需的全部设置。
使用“IEAK 配置文件管理器”。通过“IEAK 配置文件管理器”可构建自动配置或 INS 文件来存储 Internet Explorer 7 的设置。刚开始使用配置文件管理器时需要加载或创建新的 INS 文件。可以从头开始，即通过在“自定义向导”中配置的相同设置来创建新的 INS 文件。但是为什么要重复操作？构建安装包时，在默认情况下 IEAK 会创建 install.ins 文件来存储浏览器设置。使用 install.ins 文件，而不是在配置文件管理器中创建新的 INS 文件。要加载此文件，可浏览到构建目录中的 INS 路径，如 c:\builds\01012007\INS。顺着余下的子目录向下浏览，直至找到该文件。
配置文件管理器将该文件的设置分为两个部分，如图 4 所示。“向导设置”包括主页、代理设置和安全区域等浏览器选项。这些选项对应于“自定义向导”的阶段 3 到 5 中的设置。“策略和限制”部分控制用户限制，该部分对应于“自定义向导”的阶段 5 中“策略和限制”五种类别中的设置。
图 4 使用配置文件管理器配置 Internet Explorer
图 4 使用配置文件管理器配置 Internet Explorer
因为已经在构建安装包时定义了这些设置，所以无需做任何修改。不过现在应仔细检查所有为安装包选择的设置以保证它们的准确性。
在验证了配置文件管理器中的全部设置后，请将 install.ins 文件保存在其他位置，然后将其复制到内部 Web 服务器中。要完成此操作，需要进入服务器的通用命名约定 (UNC) 路径，也就是在“自定义向导”的阶段 4 中的“自动配置”屏幕上指定的路径。系统会提示您保存 CAB 文件和 INS 文件，如图 5 所示。这是为什么？使用配置文件管理器修改 Internet Explorer 7 设置时，IEAK 通常需要把注册表项下载到 Windows 客户端。这些注册表项存储在 INF 文件中，随后又存储在 CAB 文件中。如果 INS 文件的版本号因为新的修改而发生改变，那么会生成新的 CAB 文件以用于下载。把 CAB 文件和 INS 文件存储在 Web 服务器上的同一个目录中。
图 5 保存自动配置文件
图 5 保存自动配置文件
最好制作 INS 文件和 CAB 文件的副本，然后把它们保存到 Web 服务器的不同目录中。可以将其看作备份副本和测试副本。如果今后要使用配置文件管理器修改 Internet Explorer 设置，那么在正式修改 INS 文件前，可加载并修改测试 INS 文件来测试更改。
通过配置文件管理器很容易更改浏览器设置或控件。只需要选择合适的类别就可以启用或禁用它的任何选项。更改完成后，重新保存 INS 文件并重新把它复制到服务器。
另一个建议：INS 文件只是文本文件。可通过记事本打开以查看其设置。能否通过记事本来编辑 INS 文件？可以，而且编辑后的设置能够生效。不过使用配置文件管理器编辑 INS 文件更加方便。配置文件管理器会自动生成 CAB 文件（如果需要该文件），而且它会在每次修改后自动用新的版本号标记 INS 文件。因此必须使用配置文件管理器来修改 INS 文件。

总结
IEAK 可快速有效地创建和自定义 Internet Explorer 7 版本。最新版本的 IEAK 7 在以前版本的基础上有了明显的提高（例如其具有更清晰的屏幕，更实用的“帮助”），使用它来设计安装包会更加方便。通过了解和使用 IEAK，您可以向用户提供可靠的 Internet Explorer 7 安装，同时也可以取悦自己的 CIO。
Internet Explorer 7 的自动交付
Microsoft 计划在 Internet Explorer 7 最终版本发布后不久，通过自动更新以及 Windows Update 和 Microsoft Update 站点把 Internet Explorer 7 作为高优先级更新来分发。在这种情况下，根据系统环境的不同，管理员会遇到不同的问题。如果用户没有本地管理权限，那么就不会收到此更新。同样，如果使用 Microsoft Systems Management Server (SMS) 或 Windows Server Update Services (WSUS) 来管理系统环境，那么管理员就可以控制用户所接收到的更新。不过，如果部分用户或全部用户拥有本地管理权限，而且管理员没有可管理更新的系统，则可能需要阻止 Internet Explorer 7 更新。Microsoft 已经创建了 Internet Explorer 7 Blocker Toolkit。此 Toolkit（可从 Microsoft 下载中心下载）包括组策略模板和脚本，其设置了一个注册表项，可阻止 Internet Explorer 7 更新运行。

Lance Whitney 是一位 IT 顾问、培训师和技术撰稿人。从 4.0 版的 Internet Explorer 开始，他就一直为其创建和支持安装包。大约 15 年前，当他还是一名记者时，就开始涉足 IT 世界。


 SQL 问题与解答: 数据存档、链接服务器、测量带宽及其他内容
SQL 问题与解答
数据存档、链接服务器、测量带宽及其他内容
编辑：Nancy Michell

数据存档
问：我的小组需要完整的数据存档策略。我当前的方法基于标准模型，即备份数据后再运行清除历史数据的实用程序。如果要检索已清除的数据，则要还原该环境和数据库（本文章还包含指向英文网页的链接）。
我正在寻求一种可以分阶段实施的存档解决方案。第一阶段，从数据库中清除数据，但仍可以实时访问。换句话说，数据已经删除，因此可以管理生产数据库的大小，但最终用户仍可访问数据。第二阶段，数据完全删除，要进行访问就需要进行还原。该如何完成此项任务？
答：最容易的方法是还原数据库的存档副本，然后修改应用程序，让其访问已修整的新数据库或未修整的旧数据库（如果用户如此请求）。因此，您将在每个清除阶段都拥有一个数据库副本。
如果数据变化很慢，而大多数数据在两次清除之间不会改变，最终可能因重叠而浪费大量的空间。另一方面，由于访问并不频繁，或许您可将这些存档数据保存在一些速度慢且成本较低的大型驱动器中（代替许多速度快且成本较高的小型驱动器）。如果数据在每个阶段都会全部刷新，将使您称心如意。此过程应该非常易于管理，并且几乎万无一失。
同时，还应该研究使用数据库快照的可能性，它们提供了一种在修整旧数据库之前创建时间点副本的方法。快照在一些情况下可以正常工作，并具有许多含义。数据库快照是“写入时复制”的，并在使用快照时持续维护原始数据库和时间点之间的更改。如果对原始数据库进行了大量的更改，快照就可能变得很大。
在某种意义上，数据库快照与备份和还原相反。前者在预期更改很少时才有意义，因为其仅存储变化量，而后者更适合预期更改很多的情况。在这种情况下，当一直很难管理快照时，“写入时复制”节约空间的优点也就不复存在了。
另一种选择是使用 table partitioning（英文）。可使用它取出特定的表，指定属于不同分区的关键值范围，然后将这些分区置于不同的文件组中。只要控制了一个表中进入数据的文件组以及所进入的数据，就可以更好地控制相关的成本。您可以选择要存储文件组的物理驱动器（请参阅之前关于成本较低和成本较高的驱动器对比的说明）以及所存储的文件组，并选择应当备份的文件组以及备份频率。如果您将这些文件组设置为只读，还可使用部分备份。

数据库数量
问：我公司准备实施和部署一套应用程序，为预计约 5,000 位客户提供服务。我们计划为每位客户实施一个数据库，以保证保密性。如果数据库的数量为 1 或 5,000，对于给定的数据和索引大小、用户连接数和工作负荷，服务器资源利用率会不会变低？
答：不管您的职员有多少，在数据库之间维护相同的基本代码都异常困难。修正数据库代码中的一个错误，您就需要重复 5,000 次。此外，数据库的恢复时间也很惊人，这将会与备份和数据库一致性检查这样的任务花费同样多的时间。可以这样考虑，银行是否在主机上为每个拥有支票帐户的客户建立一个单独的数据库？
SQL Server™ 可以创建许多许多的数据库，但这不一定是最好的方法。只需考虑一下同时在每个数据库执行一个事务所需的工作量，您就会望而却步，再加上每个数据库都具有自己的事务日志。众所周知，联机事务处理 (OLTP) 性能的关键之一在于维护一个事务日志按顺序写入基本磁盘的环境。如果您要在这些数据库中执行事务，而不是仅仅进行读取，请不要使用这种方法。

查询链接服务器
问：我正在使用 SQL Server 2005 Service Pack 1 (SP1) 开发数据仓库。我们的源服务器位于合作伙伴的域中，而目标服务器位于我们自己的域中。我们通过链接服务器从源服务器提取记录。当我们从源服务器连接源表执行查询时，可以非常迅速的执行查询。但是，只要连接我们的一个非常简单的目标表，查询就会变得很慢。这是为什么？
答：最好的方法是避免服务器交叉连接，尤其是对于跨域边界的情况。这就是说，根据您的特定结果，这个问题可能会发生，因为您的合作伙伴信任您的域，但您却不信任合作伙伴的域。请尝试重构您的查询，使其从源服务器运行，然后将结果复制到目标服务器。这样您可能会得到更好的结果。

测量带宽
问：有没有最好的方法可以测量数据库镜像所用带宽？我知道这需要有三倍于日志生成的速率，但是如果请求量不是很大，是否可能通过 Web 上的宽带连接进行数据库镜像？
答：除原始吞吐量外，您需要考虑往返消息延迟（如果安全性为完全时更为重要）和链接可靠性。数据库镜像针对可靠的网络连接进行了优化，因此重新连接可能会产生大量的开销。如果宽带连接不稳定（连接丢失或延迟很长），您可能无法维护连接。有关详细的帮助信息，请查看关于镜像性能注意事项的 whitepaper（英文）。
安全访问 SQL Server
如何在生产环境中寻求安全访问 SQL Server 的建议？请参阅 Microsoft patterns & practices Developer Center（英文）。以下是三种可能特别重要的模式：
  • Security Engineering Index（英文）
  • Security Guidance for Applications Index（英文）
  • Threat Modeling Web Applications（英文）

是否想了解如何建立完整操作环境的详细信息？这里有两篇不错的参考资料：
  • Windows Server 系统参考体系结构
  • Data Services Implementation Guide（英文）

衷心谢谢以下 Microsoft IT 专家，感谢他们与我们分享了技术与专业知识：Denis Altudov、Jayashree Anand、Gus Apostol、Bhavana Bartholf、Mike Blaszczak、Dibyendu Chakraverty、Shaun Cox、Laurentiu Cristofor、Ernie DeVore、Michael Epprecht、Nakul Garg、Phil Hummel、Steve Lindell、Kaloian Manassiev、Al Noel、Ward Pond、Paul Randal、Remus Rusanu、Mike Shelton、Christy Sutton、Kevin Tsai、Peter Ty、Val Wittenberg、Steven Wort、Kalyan Yella 和 Frankie Yuen。


 网络专家: TCP 接收窗口自动调节
网络专家
TCP 接收窗口自动调节
Joseph Davies

欢迎来到 TechNet 杂志“网络专家”的第一部分。TechNet 网站上的专栏爱好者都知道我们探讨各种网络问题，我们每个月都将继续保持这个传统。如果您是新手，要查找以前专栏的存档，请访问网络专家站点。
现在开始介绍我们的第一个主题 - TCP 接收窗口。
TCP 连接的吞吐量可以通过发送和接收应用程序、发送和接收 TCP 的实现以及 TCP 对等方之间的传输路径来限制。在本专栏中，我将介绍 TCP 接收窗口及其对 TCP 吞吐量的影响、TCP 窗口缩放的使用以及 Windows Vista™ 中的“接收窗口自动调节”新功能（可优化 TCP 接收数据吞吐量）。

TCP 接收窗口
TCP 连接具有许多重要的特点。首先，它们是两个应用层协议之间的逻辑点对点通信。TCP 不提供一对多的传递服务，它仅提供一对一的传递服务。
其次，TCP 连接是面向连接的。在数据可以传输之前，两个应用层过程必须通过 TCP 连接建立过程正式协商一个 TCP 连接。同样，TCP 连接在通过 TCP 连接终止过程协商之后正式关闭。
再次，在 TCP 连接中发送的可靠数据按顺序排列，且期望得到接收端的肯定确认。如果没有接收到肯定确认，则重传这个段。接收端一端会放弃重复的段，并按照正确顺序排列到达时失序的段。
最后，TCP 连接是全双工的。对于每个 TCP 对等方，TCP 连接都由两个逻辑管道组成：一个传出管道和一个传入管道。TCP 报头包含传出数据的序列号和传入数据的确认 (ACK)。
此外，TCP 将通过传入和传出逻辑管道发送的数据视为连续的字节流。每个 TCP 报头中的序列号和确认号都根据字节边界定义。TCP 并不会考虑字节流中的记录或消息边界。应用层协议必须正确地分析传入的字节流。
为了限制任一时刻可发送的数据量，并为接收端提供流量控制，TCP 对等方使用窗口实现这些目的。该窗口是接收端允许发送端发送的字节流的数据范围。发送端只能发送位于窗口内的字节流中的字节。该窗口随着发送端的出站字节流和接收端的入站字节流而滑动。
对于给定的逻辑管道（全双工 TCP 连接的一个方向），发送端维护一个发送窗口，接收端维护一个接收窗口。当传输中没有数据或 ACK 段时，逻辑管道的发送和接收窗口相互匹配。换句话说，发送端允许发送的出站字节流中的数据范围与接收端能够接收的入站字节流中的数据范围相匹配。图 1 说明了这种发送和接收关系。
图 1 匹配发送和接收窗口
图 1 匹配发送和接收窗口
为了表示接收窗口的大小，TCP 报头包含了一个 16 位的“窗口”字段。当接收端收到数据时，它把 ACK 发送回发送端以表明成功接收到这些字节。在每个 ACK 中，“窗口”字段表示接收窗口中剩余的字节数。当应用程序发送、确认和检索数据后，发送窗口和接收窗口都会滑动到右侧。接收窗口是用于控制可从发送端传送给接收端的未确认数据数量的窗口。
由于接收窗口中可能会有应用程序未检索到的数据以及已接收但尚未确认的数据，因此 TCP 接收窗口具有一些其他的结构，如图 2 所示。
图 2 TCP 接收窗口中的数据类型
图 2 TCP 接收窗口中的数据类型
请注意最大接收窗口和当前接收窗口的区别。最大接收窗口的大小是固定的。当前接收窗口的大小是可变的，并对应于接收端允许发送端发送的剩余数据量。当前接收窗口大小是发送回发送端的 ACK 中通告的“窗口”字段值，等于最大接收窗口大小与已接收和确认但尚未被应用程序检索的数据量之间的差值。

TCP 接收窗口和 TCP 吞吐量
为了优化 TCP 吞吐量（假设为合理的无差错传输路径），发送端应该发送足够的数据包以填满发送端和接收端之间的逻辑管道。逻辑管道的容量可由以下公式计算：
Capacity in bits = path bandwidth in bits per second * round-trip time (RTT) in seconds
容量称为带宽延迟乘积 (BDP)。管道可以用粗（高带宽）和细（低带宽）或者长（高 RTT）和短（低 RTT）来表示。粗而长的管道的 BDP 最高。使用高 BDP 传输路径的示例包括卫星链接或带有洲际光缆链接的企业广域网 (WAN)。
增强高 BDP 传输的发送端性能
新的“接收窗口自动调节”功能增强了通过高 BDP 链接接收数据的性能，但是发送端的性能如何呢？
避免发送 TCP 对等方拥塞整个网络的现有算法被称为“慢启动”和“拥塞避免”。在连接最初发送数据和还原丢失段时，这些算法可以增大发送窗口，即发送端可以发送的段数量。
对于每个接收到的确认段（Windows XP 和 Windows Server 2003 中的 TCP）或每个已经确认的段（Windows Vista 和 Windows Server“Longhorn”中的 TCP），“慢启动”算法会以一个完整的 TCP 段增大发送窗口。对于每个已经确认的完整窗口的数据，“拥塞避免”算法以一个完整的 TCP 段增大发送窗口。
这些算法很好地适应较小的 BDP 和较小的接收窗口大小。然而，当面对一个具有较大接收窗口大小和较大 BDP 的连接时，例如在位于高速 WAN 链接（往返时间为 100 毫秒）上的两个服务器之间复制数据，利用这些算法增大发送窗口的速度就不足以充分利用连接带宽。
为了在上述情形下更好地利用 TCP 连接的带宽，下一代 TCP/IP 堆栈包括了复合 TCP (CTCP)。CTCP 可以更快地增大发送窗口，适用于拥有较大的接收窗口大小和 BDP 的连接。CTCP 试图通过监控延迟变化和损失来使这类连接的吞吐量最大化。此外，CTCP 确保其行为不会对其他 TCP 连接产生负面影响。
在 Microsoft 内部执行的测试中，对于 RTT 为 50 毫秒、传输速率为每秒 1 Gb 的连接，大型文件的备份时间几乎缩短了一半。对于具有更大 BDP 的连接，性能的改善更为明显。CTCP 和“接收窗口自动调节”配合使用，可以提高链接利用率，最终可以显著提高具有较大 BDP 的连接的性能。
默认情况下，运行 Windows Server“Longhorn”的计算机上启用 CTCP，而运行 Windows Vista 的计算机上则禁用 CTCP。可以使用“netsh interface tcp set global congestionprovider=ctcp”命令启用 CTCP，还可以使用“netsh interface tcp set global congestionprovider=none”命令禁用 CTCP。

TCP 报头中的“窗口”字段大小为 16 位，允许 TCP 对等方通告最大为 65,535 字节的接收窗口。您可以根据以下公式计算给定 TCP 窗口的近似吞吐量：
Throughput = TCP maximum receive windowsize / RTT
例如，对于 65,535 字节的接收窗口，在 RTT 为 100 毫秒的路径上只能达到速度大约为每秒 5.24 兆字节 (Mbps) 的吞吐量，而不管传输路径的实际带宽是多少。对于目前的高 BDP 传输路径，最初设计的 TCP 窗口大小即使达到最大值，仍然是吞吐量的瓶颈。

TCP 窗口缩放
为了提供可适应高速传输路径的更大窗口尺寸，RFC 1323 (ietf.org/rfc/rfc1323.txt) 定义了允许接收端通告大于 65,535 字节的窗口大小的窗口缩放。“TCP 窗口缩放”选项包括一个窗口缩放因子，该因子与 TCP 报头中的 16 位窗口字段结合时，可以将接收窗口大小最大增加到 1GB。“TCP 窗口缩放”选项只用于在连接建立过程的同步 (SYN) 段中发送数据。TCP 对等方都可以为接收窗口大小指定不同的窗口缩放因子。TCP 窗口缩放允许发送端通过一个连接发送更多的数据，可以使 TCP 节点更好地利用一些具有高 BDP 的传输路径类型。
尽管接收窗口大小对于 TCP 吞吐量而言非常重要，但确定最佳 TCP 吞吐量还有一个重要的因素，那就是应用程序检索接收窗口中累积数据的速度（应用程序检索速率）。如果应用程序不能检索数据，接收窗口就可以开始填充，导致接收端通告了更小的当前窗口大小。在极个别的情况下，整个最大接收窗口都会填满，导致接收端通告了 0 字节的窗口大小。在这种情况下，发送端必须停止发送数据，直到接收窗口已经清除为止。因此，要优化 TCP 吞吐量，必须将连接的 TCP 接收窗口设定为可同时反映该连接传输路径的 BDP 和应用程序检索速率的值。
即使您可以正确地确定 BDP 和应用程序检索速率，它们仍会随时间而变化。BDP 速率可以根据传输路径中的阻塞情况而变化，而应用程序检索速率会根据应用程序检索数据所在的连接数量而变化。

Windows XP 中的接收窗口
对于 Windows XP（和 Windows Server® 2003）中的 TCP/IP 堆栈，最大接收窗口的大小具有许多重要的属性。首先，默认值基于发送界面的链接速度。实际值自动调整为 TCP 连接建立过程中协商的最大段大小 (MSS) 的偶数增量。
其次，最大接收窗口的大小可以手动配置。可将注册表项 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\TCPWindowSize 和 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interface\InterfaceGUID\TCPWindowSize 的值设置为最大 65,535 字节（不带窗口缩放）或 1,073,741,823 字节（带窗口缩放）。
再次，最大接收窗口的大小可以使用窗口缩放。可通过将注册表项 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Tcp1323Opts 的值设置为 1 或 3 来启用窗口缩放。默认情况下，仅当接收的同步 (SYN) 段包含“窗口缩放”选项时，才在连接上使用窗口缩放。
最后，启动连接时，可使用应用程序的“SO_RCVBUF Windows Sockets”选项，指定连接的最大接收窗口大小。使用窗口缩放时，应用程序所指定的窗口大小必须大于 65,535 字节。
尽管 Windows XP 支持可缩放窗口，但其中的最大接收窗口大小仍然会限制吞吐量，因为它是针对所有 TCP 连接（除非由应用程序指定）的一个固定的最大大小，它可以增加某些连接的吞吐量，同时减少其他连接的吞吐量。另外，TCP 连接的最大接收窗口大小固定，不随应用程序检索速率的变化或传输路径中的阻塞而变化。

Windows Vista 中的接收窗口自动调节
为了优化 TCP 吞吐量，特别是具有高 BDP 的传输路径，Windows Vista（和代码名为“Longhorn”的 Windows Server 下一版本）中的下一代 TCP/IP 堆栈支持接收窗口自动调节功能。该功能通过测量 BDP 和应用程序检索速率，以及调整当前的传输路径和应用程序状况的窗口大小，来确定最合适的接收窗口大小。
默认情况下，“接收窗口自动调节”会启用 TCP 窗口缩放，它所允许的最大窗口大小为 16 MB。数据流通过连接时，下一代 TCP/IP 堆栈会监控连接，测量该连接当前的 BDP 和应用程序检索速率，并调整接收窗口大小以优化吞吐量。下一代 TCP/IP 堆栈不再使用 TCPWindowSize 注册表值。
“接收窗口自动调节”功能具有许多优点。它可以根据每个连接自动确定最佳的接收窗口大小。在 Windows XP 中，TCPWindowSize 注册表值适用于所有的连接。应用程序无需再通过“Windows Socket”选项指定 TCP 窗口大小。并且 IT 管理员也无需再为特定的计算机手动配置 TCP 接收窗口的大小。
使用“接收窗口自动调节”功能后，基于 Windows Vista 的 TCP 对等方通常会比基于 Windows XP 的 TCP 对等方通告更大的接收窗口大小。这使得其他 TCP 对等方可以通过发送更多的 TCP 数据段来将管道填入基于 Windows Vista 的 TCP 对等方，而无需等待 ACK（服从 TCP 拥塞控制）。对于如网页或电子邮件等典型的基于客户端的网络通信，Web 服务器或电子邮件服务器可以向客户端计算机更快更多地发送 TCP 数据，从而全面提高网络性能。连接的 BDP 和应用程序检索速率越高，性能的提高就越明显。
在数据传输中，将通常以较慢的速度发送的 TCP 数据包流快速发送，从而导致网络利用率出现更大的高峰，这就是该方法对网络造成的影响。基于 Windows XP 和 Windows Vista 的计算机在长而粗的管道上执行相同的数据传输时，传输的数据量相同。然而，基于 Windows Vista 的客户端计算机的数据传输更快，因为其具有更大的接收窗口大小，并且服务器能够填充从自身到客户端的管道。
由于“接收窗口自动调节”会增加高 BDP 传输路径的网络利用率，因此对于达到或接近最大容量的传输路径，限制使用服务质量 (QoS) 或应用程序发送速率可能会变得非常重要。为了满足此潜在的需要，Windows Vista 支持基于组策略的 QoS 设置，可以利用该设置为基于 IP 地址或 TCP 端口的信息流发送速率定义限制速率。有关详细信息，请参阅基于策略的 QoS 资源。
增加高损失网络的 TCP 吞吐量
在高损失网络中，频繁的超时和重传可能会大大降低 TCP 吞吐量。高损失网络的一个例子就是无线网络，如基于 IEEE 802.11、通用分组无线业务 (GPRS) 或通用移动通信系统 (UMTS) 的网络，由于网络状况、信号衰减、电磁干扰和计算机的位置变化，可能会有较高的数据包丢失率。
下一代 TCP/IP 堆栈支持以下四种 RFC，可以优化高丢失率环境中的吞吐量：

RFC 2582：The NewReno Modification to TCP's Fast Recovery Algorithm（TCP 快速恢复算法 NewReno 修正）
RFC 2001 中定义的快速恢复算法基于 Reno 算法，由于快速重传事件而重传段时，Reno 算法可增加发送端能发送的数据量。Reno 算法适用于单个丢失的段，有多个丢失段时就不适用了。当数据窗口中的多个段丢失且发送端收到部分确认（仅对成功接收的那部分数据的确认）时，NewReno 算法通过更改快速恢复过程中发送端可以用来提高发送速率的方法，提供更大的吞吐量。

RFC 2883：An Extension to the Selective Acknowledgment (SACK) Option for TCP（TCP 选择确认 (SACK) 选项扩展）
RFC 2018 中定义的 SACK，允许接收端通过使用 SACK TCP 选项指示最多四个接收数据的非邻接块。RFC 2883 定义用于确认重复的数据包的 SACK TCP 选项中的字段的额外使用。发送端可以通过此操作确定何时重传了不必要的段并调整其行为，以防今后不必要的重传。发送的重传越少，整体吞吐量越合理。

RFC 3517：A Conservative Selective Acknowledgment-based Loss Recovery Algorithm for TCP（TCP 的基于保守选择确认的丢失恢复算法）
Windows Server 2003 和 Windows XP 中的 TCP/IP 当前实现只使用 SACK 信息确定未到达目标的 TCP 段。RFC 3517 定义了收到重复确认后使用 SACK 信息执行丢失恢复的方法，以便在连接上启用 SACK 时替代原来的快速恢复算法。下一代 TCP/IP 堆栈基于每个连接跟踪 SACK 信息并监控传入确认和重复确认，以便在目标未收到多个段时更快进行恢复。

RFC 4138：Forward RTO-Recovery (F-RTO)：An Algorithm for Detecting Spurious Retransmission Timeouts with TCP and the Stream Control Transmission Protocol (SCTP)（使用 TCP 和流控制传输协议 (SCTP) 探测伪重传超时设定的算法）
RTT 突然增加时，可能会出现 TCP 段的伪重传现象，导致先前发送的段的重传超时设定 (RTO) 逐渐到期，TCP 开始重传它们。如果 RTT 增加正好发生在发送整个窗口的数据前，发送端可能会重传整个窗口的数据。F-RTO 算法通过以下行为防止 TCP 段的伪重传。
当多个段的 RTO 到期时，TCP 只重传第一个段。收到第一个确认后，TCP 开始发送新段（如果通告的窗口大小允许）。如果下一个确认确认超时但未重传的其他段，则 TCP 确定超时是伪超时，不重传超时的其他段。
这样的结果是，对于 RTT 突然和临时增加的环境（例如，当无线客户端从一个入口点漫游到另一个时），F-RTO 可防止不必要的段重传并更快地恢复到正常发送速率。基于 SACK 的丢失恢复和 F-RTO 最适用于使用 GPRS 链接的连接。

Joseph Davies是 Microsoft 的一位技术撰稿人，从 1992 年起一直在培训和编写 Windows 网络主题。他曾为 Microsoft Press 编写了五本著作，并且是每月的 TechNet 网络专家专栏的作者。


 Windows PowerShell: Windows PowerShell 构造
Windows PowerShell
Windows PowerShell 构造
Don Jones

上个月，我向您展示了将 Windows PowerShell 用于即时解决管理任务的方法 - 但没有编写任何文字资料。但是，Windows PowerShell 是一种优秀的交互式命令解释程序，您可以在开始利用它强大但脚本简单的语言时使用它的功能并自动执行更加复杂的任务。
但首先您要问问自己：Microsoft 真的需要另一种脚本语言吗？毕竟，Microsoft 向我们提供了 KiXtart（一种登录脚本处理器）以及 Visual Basic® Scripting Edition (VBScript)。但是，答案是肯定的。Microsoft 确实需要另一种脚本语言。我将解释原因。
Windows PowerShell™ 语言需要简单直观，这样管理员可以不经过太多训练就掌握它。它也需要相当灵活，这样就可以适应 Windows PowerShell 本身提供给用户的所有强大功能。
因为 Windows PowerShell 是基于 Microsoft® .NET Framework 的，所以它的脚本语法需要得到 .NET 的支持。在编写 Windows PowerShell 脚本语言时，设计师选择的实质上是高度简化的 C#（读作 C-Sharp，是 .NET Framework 附带的语言之一）。为什么不继续使用类似于 VBScript 的语法呢？实际上，Windows PowerShell 脚本语言与 VBScript 并没有多大不同，只是与 C# 的语法更加接近，从某种意义上讲，PowerShell 是学习 .NET Framework 编程的踏脚石。如果您决定进阶到 Visual Studio® 并开始编写 C# 应用程序，您的大部分 Windows PowerShell 脚本语法知识也将继续给您提供帮助。
Windows PowerShell 脚本语言 - 或者就此而言，任何脚本语言 - 中最重要的一点是它的构造。 这些是特殊语言元素，允许 Windows PowerShell 执行逻辑比较并根据比较结果进行不同的操作或者允许不断地重复指令。

进行逻辑思考
逻辑比较是很多脚本语言构造的核心，Windows PowerShell 也不例外。比较实质上查看两个值或对象并计算以决定比较结果是 True 还是 False。例如，您可以问自己，“用户的密码有效期是否到今天截止？”如果今天到期结果为 True，否则为 False。注意我将 True 和 False 的首字母写成大写形式，因为在 Windows PowerShell 中它们是具有特殊含义的词。
此处是一个您可以在 Windows PowerShell 中执行的真实的逻辑比较示例：
PS C:\> $a = 1
PS C:\> $b = 2
PS C:\> $a -eq $b
False
我已经创建了名为 $a 的变量并将其设置为包含值 1。在 Windows PowerShell 中，变量名总是以美元符号开头，因此容易辨认。从技术角度来说，= 是指赋值运算符，因为它用来赋值。接下来，我会创建第二个变量 $b 并将值 2 赋给它。然后进行实际的逻辑比较 - 我要求 Windows PowerShell 利用 -eq（相等）运算符来比较 $a 和 $b 的内容。PowerShell 执行比较，确定两个值不相等，并显示结果：False。
Windows PowerShell 运算符与您可能见过的其他脚本语言有点不同，甚至不同于 C#。大多数语言使用 = 运算符来检查是否相等以及执行赋值操作；而 Windows PowerShell 通过对每个函数采用专用的运算符来避免混淆。图 1 显示 Windows PowerShell 比较运算符，以及您可能已经熟悉的其他语言（如 VBScript）中的相等运算符。
Figure 1 PowerShell 比较运算符 (Close Figure 1)

运算符 | 名称 | 说明
-eq | 相等 | 测试值是否相等。其他语言可能使用 = 或 == 来测试相等。
-ne | 不等 | 测试不等。其他语言可能使用 <> 或 != 来测试不等。
-gt | 大于 | 测试一个值是否大于另一个值。其他语言可能使用 > 字符。
-lt | 小于 | 测试一个值是否小于另一个值。其他语言可能使用 < 字符。
-ge | 大于或等于 | 测试一个值是否大于或等于另一个值。与 VBScript 和其他语言中的 >= 类似。
-le | 小于或等于 | 测试一个值是否小于或等于另一个值。与 VBScript 和其他语言中的 <= 类似。
这些比较运算符有另一种有趣的功能。看看该比较：
PS C:\> $a = "TechNet"
PS C:\> $b = "technet"
PS C:\> $a -eq $b
True
默认情况下，比较运算符不区分大小写，意味着大写的 TechNet 将视为等价于“technet”。那很方便，因为在大多数管理任务中您并不关心字母的大小写问题。但是，有时候您可能会关心，而您可以要求 Windows PowerShell 将字母 c 置于比较运算符之前以执行区分大小写的比较：
PS C:\> $a -ceq $b
False
同样，如果您确实想知道或不确定 Windows PowerShell 是否会执行不区分大小写的比较，您可以通过预置字母 i 来强制它这样做：
PS C:\> $a -ieq $b
True
只要记住逻辑比较总是产生两种结果之一：True 或 False。

做决定
既然您知道了如何编写逻辑比较，您可以开始在构造中使用它们。我将向您展示的第一个构造允许 Windows PowerShell 在比较的基础上做出决定。它称为 If 构造，并且有几种变形形式。以下是最简单的形式：
PS C:\> if ($a -eq $b) {
>> Write-Host "They are equal"
>> }
>>
They are equal
此处有一些有趣的问题需要注意。首先，变量 $a 和 $b 仍然分别包含值 "TechNet" 和 "technet"。我使用 If 关键字来作为构造的开头。之后，在括号中我输入了要执行的逻辑比较。接着是花括号，表示我将调用的条件代码（如果比较时返回的结果为 True，则为 Windows PowerShell 将要执行的代码）的开始。您从之前的示例可以知道该比较确实返回 True，因此我期望执行条件代码。我键入我的条件代码 Write-Host "They are equal"，然后按 Enter。最后，我键入右花括号结束条件代码段，并敲击 Enter 两次。（第二次是在空白行上敲击 Enter，这让分析器知道我已经完成了编写并准备好执行代码。）
注意该构造并不从脚本文件运行。我只需将它键入 Windows PowerShell 命令行。这使得 Windows PowerShell 在 Windows 的脚本世界里独一无二：脚本可以交互式地创建，也可以放入文件以做长久的存储。
我一键入左花括号并按 Enter，Windows PowerShell 就显示 >> 提示符。那是它的表达方式，意思是“我识别出您位于构造中，并且我已准备好让您在构造内键入任何内容。”在我键入右花括号并敲击 Enter 两次后，Windows PowerShell 立即执行构造，确定其逻辑比较结果是 True 并执行条件代码。您可以看见该内容，因为 "They are equal" 在 PowerShell 返回到其正常提示符前显示。使用 Windows PowerShell 来交互式地编写脚本允许您在将代码构建成为更长期的脚本前快速测试它们，使得学习和调试都更加容易。
我要指出 Windows PowerShell 对按 Enter 这类的事并不是要求特别高。例如，这在功能上与上一示例相同：
PS C:\> if ($a -eq $b) { Write-Host "They are equal" }
They are equal
因为这些内容我都在一行上键入，所以 Windows PowerShell 不需要显示特殊的 >> 提示符；它只需在我于行末按 Enter 时执行构造。Windows PowerShell 是如何知道可以执行构造了的呢？因为它在那个点处是完整的 - 已键入右花括号。
我提到 If 构造的其他变形形式。以下是一个完整的示例，以其在 PS1 脚本文件而不是命令解释程序中的形式显示：
if ($a -eq $b) {
  Write-Host "They are equal"
} elseif ($a -lt $b) {
  Write Host "One is less than the other"
} else {
  Write Host "One is greater than the other"
}
构造同样使用 If 关键字作为开头。但是，在比较结果为 False 的情况下，我使用 Elseif 关键字来提供了另一种比较。如果第二个比较结果也是 False，则最后一个关键字 Else 会提供将执行的最后一组代码。

重复自身
Windows PowerShell 包含几个用于反复执行代码的构造，直到比较结果为 True 或 False。程序员调用这些循环构造。更好的是，其中最有用的一个循环构造可以枚举集合中的对象并为每个对象执行一行或多行代码。更确切地说，构造称为 foreach 构造，形式如下：
PS C:\> $names = get-content "c:\computers.txt"
PS C:\> foreach ($name in $names) {
>> Write-Host $name
>> }
>>
don-pc
testbed
首先我要求 Windows PowerShell Get-Content cmdlet 检索 c:\computers.txt 文件，这是我自己创建的文件，每行包含一个计算机名称。Windows PowerShell 将每一行作为对象来处理，因此文件实质上是包含这些对象的集合。集合以变量 $names 结束。使用 Foreach 关键字，我告诉 Windows PowerShell 通过利用变量 $names 在每次循环执行时表示当前对象来枚举 $names 集合。循环代码在花括号中。因此，对于文件中的每个名称，我都将输出到命令行。并且，如同您可以从构造后的输出看到的一样，那正是 Windows PowerShell 所做的。您可以看到这是如何在管理脚本中带来明显的益处的：例如，您可以轻松地构造服务器名称列表，并让 Windows PowerShell 依次从每一个中检索信息。

实际构造
那么，让我们利用 If 构造和 foreach 构造来进行逻辑比较，并做一些有用的事情。我要快速检查一组服务器上的“Messenger”服务的状态。我期望在大多数服务器上服务将停止，因此我不想让 Windows PowerShell 列出所有其中的服务处于我所期望的状态的服务器；我只想让它列出 “Messenger” 服务实际已启动的服务器，因为我需要对这些服务器进行某些操作。
我知道 Windows PowerShell Get-Service cmdlet 可以有助于检索我需要用于本地计算机的信息。但遗憾的是，它无法访问远程计算机，那才是我真正的目的。令人高兴的是，我也可以使用 Get-WMIObject cmdlet，通过 Windows Management Instrumentation (WMI) 来访问相同的信息，这使我可以使用远程计算机。以下是脚本：
$names = get-content c:\computers.txt
foreach ($name in $names) {
  $svc = get-wmiobject win32_service '
   -computer $name -filter "name='messenger'"
  if ($svc.started -eq $True ) {
    write-host "$name has Messenger running"
  }
}
留意到第三行的 ' 字符了吗？它告诉 Windows PowerShell 下一行是延续部分。它在整行如果不换行就无法置于库中这种情况下有用。还要注意 If 构造将 $svc.started 与 $True 比较。变量 $True 是 Windows PowerShell 中的特殊变量，表示布尔 True 值。（同伴变量 $False，表示布尔 False。）实际上，在那里我本可以走一些捷径：
$names = get-content c:\computers.txt
foreach ($name in $names) {
  $svc = get-wmiobject win32_service '
   -computer $name -filter "name='messenger'"
  if ($svc.started) {
    write-host "$name has Messenger running"
  }
}
记住，If 构造的条件只需要为 True 或 False。通常，您通过比较两个值获得 True 或 False，就像我在该脚本的第一个版本中所做的那样。但是，由于“Started”属性为 True 或 False，因此无需将其与 True 或 False 比较。

一种有用的工具
至此您已经获得了一种利用构造来发挥作用，简单而有用的管理工具。无论您是交互式地将它键入 Windows PowerShell，还是在 PS1 文件中保存它以轻松地复用，它都是一种检查各种计算机上服务状态的方便的工具，并且很好地演示了构造是如何有助于自动执行管理任务的。

Don Jones 是 SAPIEN Technologies 的项目和服务主管，也是《Windows PowerShell: TFM》（SAPIEN Press，2006）的合著者。通过网站联系 Don，网址是 ScriptingAnswers.com。


 您好，脚本专家！: 言词要谨慎
您好，脚本专家！
言词要谨慎
Microsoft 脚本专家

美国内战期间（准确地说，是在 Spotsylvania 战役中），盟军将军 John Sedgwick 沮丧地发现这样一个事实：他的士兵被偶尔来自联邦狙击手的流弹吓得东躲西藏。据传，Sedgwick 曾这样对他的士兵说：“你们这样逃避，我真为你们感到羞耻。在这个距离，他们连一头大象也不可能击中。”过后不久，Sedgwick 即成为战争中被打死的官阶最高的盟军军官。也许在那个距离，联邦军狙击手无法击中一头大象，但不幸的是，对 Sedgwick 而言，他们却可以击中一位将军。
毫无疑问，故事所传达的道理是（你已经提到了）：“如果有人向你开枪，请把头低下”，这是一种很好的精神，不是吗？我们认为这是一种很不错的做法。我们还要提倡如下精神：“言词要谨慎，因为有一天它可能会回来，成为您的困扰。”对于 John Sedgwick 将军来说，这种情况真的发生了，对许多其他人也会如此。例如，人们记得 Thomas Watson，并不因为他曾是 IBM 的总裁，美国历史上伟大的企业家。而是因为他说过的这句话，“我认为全球大概只需要五台计算机就足够了。”
有趣的是，并没有证据表明 Watson 确实说过这段话；充其量，他只是提到了其他人对这个问题的看法。但谁真正在意呢？毕竟，IBM 的总裁可能说过计算机没有市场，让我们得到一个深刻的教训，我们不能让貌似正确的愚蠢观点来妨碍我们，对吗？
顺便说一下，Watson 确实说过“迈向成功的最快方法，是把失败率提高一倍。”这是脚本专家们深信不疑的忠告。
尤其是把失败率提高一倍的忠告。
接下来，是这段引用：“如果您正在编写 VBScript 脚本，那么您就无法访问 .NET Framework。”无可否认，与“在这个距离，他们连一头大象也不可能击中”或“我认为全球大概只需要五台计算机就足够了”相比，这段说明脚本专家无法访问 Microsoft® .NET Framework 的话不太容易让人记住，但是，这种说法同样是大错特错。.NET Framework 实际上是由 C# 和 Visual Basic® 语言的开发人员设计而成的，而且 VBScript 并不能实例化原生 .NET Framework 类。但这并不意味着脚本专家就无法访问 .NET Framework，至少可以访问其部分内容。
是的，您说对了：我们不能否认对于 VBScript 来说，大多数 .NET Framework 类是无法访问的。但是，也有相当大数量的 .NET 类具有可调用 COM 的包装程序，这就意味着这些类包含一个 COM 接口，使得脚本语言（如 VBScript）可以访问它们。您说这让人难以置信？那么看一看图 1 中显示的您注册表中的 HKEY_CLASSES_ROOT 部分；您应该能够看见随系统开始的所有类。
图 1 注册表中的系统类
图 1 注册表中的系统类
这些多数是 .NET Framework 类，其中大部分都可以通过 VBScript 来实例化。
我们曾在之前谈论过这一点！
当然，正如曾经购买过深夜电视广告产品的人所证实的一样，您可以做某事并不意味着就应该做（这是通常为什么某些商品没有现货的原因）。当然，您可以在脚本中创建 System.ContextMarshalException 类的实例，我们只是不知道您为什么要使用它或者如何使用它。
但并非所有 .NET Framework 类都是如此。例如，脚本编写领域中很让人困扰的一个问题，是没有一种简单的方法来对项目列表进行排序。要将列表按字母顺序排序，要求您使用未连接记录集或完全自行创建一个深奥的排序函数，如以下冒泡排序代码（不具备这种能力的人可能想要跳到下一段）：
For i = (UBound(arrNames) - 1) to 0 Step -1
    For j= 0 to i
        If UCase(arrNames(j)) >
          UCase(arrNames(j+1)) Then
            strHolder = arrNames(j+1)
            arrNames(j+1) = arrNames(j)
            arrNames(j) = strHolder
        End If
    Next
Next
别灰心：我们编写了代码，但是我们也不完全确定它的意思。
那么，在这种情况下，.NET Framework 如何来帮助我们呢？要回答这个问题，让我们看一小段非常简单明了的脚本：
Set DataList = CreateObject _
      ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()

For Each strItem in DataList
    Wscript.Echo strItem
Next
正如您所看到的，我们是在创建一个 .NET Framework 类 System.Collections.ArrayList 的实例。然后，我们使用 Add 方法向列表中添加五个项目。这的确不错，除了一点：我们以随机的方式（B、C、E、D、A）来添加这些项，但我们需要按字母顺序（A、B、C、D、E）来显示它们。该使用冒泡排序代码了，对吗？
错了！（请原谅我们直言不讳，但是必须承认错误这个事实。）事实证明，我们不需要使用冒泡排序代码；我们所要做的是调用数组列表的 Sort 方法：
DataList.Sort()
就是这样。利用这一行代码，我们就可以对数组列表中的所有项进行排序。
证明一下？哇，这么多人。没问题；我已经料到听众里会有一些人持怀疑态度。这就是为什么脚本会包括 For Each 循环的原因，它遍历列表中的所有项，将每项的值回显到屏幕上：
For Each strItem in DataList
    Wscript.Echo strItem
Next
现在，有一个问题需要你们解决：运行该脚本时，我们会得到什么返回结果？
猜得好：
A
B
C
D
E
很不错，不是吗？
嗯，我们看到你们中的一些人还不完全满意。你们都表示这很不错，但你们真正要做的是以降序回显这些值；即，需要一个从 Z 到 A 而不是从 A 到 Z 的列表。如果你们无法获得这种结果，那么......
嗨，没问题。你们只要提问即可：
Set DataList = CreateObject _
      ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()
DataList.Reverse()

For Each strItem in DataList
    Wscript.Echo strItem
Next
你们说对了：这与我们刚才向你们展示的脚本非常相似，是吗？但是，有一个重要的补充。看一看我们在紧接着 Sort 方法的位置添加的单行代码：
DataList.Reverse()
看到了吗？在对列表进行升序排列后，我们调用 Reverse 方法，该方法将数组中的所有项逆序排列，这简直令人难以置信。它提供给我们什么？它提供给我们如下所示的输出：
E
D
C
B
A
这真得让人为之一振，不是吗？
但是等等！我们还能做得更好。你们尝试过从 VBScript 数组中删除一项吗？不要大声喧哗；我们不打算要你们这么做。我们将向你们展示从 .NET Framework 数组列表中删除一个项目是多么容易。不喜欢字母 D？去掉它。以下是创建数组列表、对其进行排序然后删除条目 D 的脚本：
Set DataList = CreateObject _
  ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()
DataList.Remove("D")

For Each strItem in DataList
    Wscript.Echo strItem
Next
你们应该再次看看紧接在 Sort 方法后的小行代码：
DataList.Remove("D")
此处我们使用了 Remove 方法来删除等于 D 的项。以下是运行脚本时获得的返回结果：
A
B
C
E
再见，D！
并且不要忽略了最精彩的一点：我们可以在不必调整数组大小或重新设置其维数的情况下删除项目。这很酷。当然，我们也可以不必调整数组大小或重新设置其维数就向数组添加项。还有什么地方没让您的脚本编写更加简单快捷呢？
信不信由你，这里只涉及了你们可以对 .NET Framework 数组列表所做的一小部分操作（有关详细信息，请参阅 .NET Framework SDK 中的数组列表条目）。
数组列表对脚本程序有用吗？让我们这样来解释一下：看过 .NET Framework 数组列表后，我们不清楚你们为什么要使用内置 VBScript 数组，至少不应用于我们在此处使用过的简单项目列表。
无可否认，我们脚本专家没有对 .NET Framework 做详尽的调查以了解哪些类可能对脚本程序有用（以及哪些可能没有用）。这项工作正在进行之中。同时，请随意浏览整个 .NET Framework SDK。似乎每次浏览 SDK 时，我们都能发现一些有趣的新东西可供脚本编写者使用。
举个例子？生成随机数怎么样？要使用 VBScript 随机数生成器生成一个 1 到 100 之间的随机数吗？没问题，只需使用类似以下的代码：
Randomize
Wscript.Echo Int((100 - 1 + 1) * Rnd + 1)
记住那个公式了吗？如果没有，别担心；事实证明，使用 .NET Framework System.Random 类要简单直观得多：
Set objRandom = CreateObject("System.Random")
Wscript.Echo objRandom.Next_2(1,100)
你们很可能不需要解释说明就能计算出结果。无论怎样，我们将提供给你们一个简短的说明，只因为 TechNet 杂志认为专栏作家每个月应该实际写些东西。（如果非得问个为什么，那我只能说这是他们的策略，不是我们的。）
正如您所看到的，我们创建了一个 System.Random 的实例，然后传递两个参数来调用 Next_2 方法：
  • 1，范围内的第一个数（记住，我们希望生成一个 1 到 100 之间的随机数）。
  • 100，范围内的上限数。
这就是我们所要做的一切。
似乎我们还有时间来回答最后一个问题。穿绿衬衫的这位。到底是谁说脚本编写者无法访问 .NET Framework？这个，坦白地讲，我们刚开始的时候 – 天哪，好象时间已经到了。下个月见！
万事顺利，万事顺利
二月份快要到了，这只意味着一件事。不，不是情人节。不，也不是总统日。噢，天哪，土拨鼠节？不，越接近二月，2007 年冬季脚本编写比赛就离我们越近，这是全球最重要（可能也是世界上唯一的）的国际脚本编写竞赛。本年度的比赛将会比以往规模更大、水平更高，这次，我们将比赛分为四个部分：
  • 初级 VBScript
  • 高级 VBScript
  • 初级 Windows PowerShell™
  • 高级 Windows PowerShell
有关详细信息，请访问 2007 冬季脚本编写游戏主页。
那是什么？噢，谢谢。同时，也祝你们土拨鼠节快乐。

今天就下载 Windows PowerShell
Windows PowerShell 1.0 现在可供下载。并且是免费的！你们怎么能拒绝呢？下载该软件，今天就开始使用。

Microsoft 脚本专家为 Microsoft 工作，也就是说受雇于 Microsoft。在没有玩/指导/观看棒球（及其他各种娱乐活动）时，他们会管理 TechNet 脚本中心。要查找所需信息，请登录网站 www.scriptingguys.com。


 Exchange Queue &amp; A: 我们知道全部的答案（因为问题是我们提的）
Exchange Queue & A
我们知道全部的答案（因为问题是我们提的）
KC Lemson and Paul Bowden

你好，欢迎来到 Exchange Queue and A 的第一部分！我们会从一系列的问题开始，老实说，这些问题都是我们自己想出来的，所以将本专栏定位于真正的问答专栏可能是不公平的。
因为这些问题和答案仅局限于在回响室里产生的问题和答案。但是，我们的确相信，这些问题可代表 Microsoft® Exchange Server 客户关心的疑问，因此我们要求精神上的优势。将来，我们当然欢迎您提出问题，所以不要客气，将您的问题发送到 queuea@microsoft.com。
我们对本专栏目前的想法是，它将是作者的轮流表演（有点类似“把作者扔到墙上，看哪位被粘住”），而我们全部的人都已参与 Exchange 的工作很多年了。本月的答案（和问题！）是由 KC Lemson 和 Paul Bowden 共同执笔的，我们都是在 Microsoft 公司的 Exchange 产品团队工作的首席程序经理。在 Exchange 开发方面我们两人都是经验相当丰富。我们从事过相当多的工作，但却从未能够脱离消息传送的范围。
KC 最近六年一直在 Exchange 小组工作，在此期间她担任过多项职务，其中包括 Microsoft Outlook® Web Access (OWA) 程序经理和负责 Exchange 预发布版客户程序的首席程序经理。目前她担任 Exchange 用户体验经理一职，负责产品设计和客户调研。 加入 Exchange 小组前，她在 Outlook 部门担任了三年的测试人员，当时人们都认为阻止电子邮件中的可执行附件是件不能再坏的事情，而她就在那个年代负责测试附件。 KC 的博客位于 blogs.technet.com/kclemson。
最近三年 Paul 一直潜心研究一个极佳的 Exchange 最佳实践分析程序 (ExBPA) 的小型工具。实际上，他几个月前因它而获奖，还和比尔·盖茨合影。然而，随着 Exchange Server 2007 项目结束，又到洗牌的时间了。Paul 需要停止对 XML 的幻想并回到现实世界。他即将出任 Exchange 下一版本（一旦 Exchange Server 2007 出货我们就将着手开始的版本）的发布经理。
另外，您喜欢本专栏文章标题包涵的无限寓意吗？当然，我们甚至不能因标题而受到好评；它是 KC 博客的一位读者提议的。（好好享受衬衣，Tim！）亚军的建议是“推动信封”和“当我是 X64”，KC 非常喜欢后者，她注册了 www.whenimx64.com 的网址并将它指向她的博客，仅是因为她可以这么做而已。若是我们对生活中的所有事情都有权决定那该多好啊。
便笺：KC 最初建议将本专栏命名为“每月 Queue and A”，而我们的编辑恰当地指出至今还不知道我们的写作数量，并且我们按计划交付文章的能力又不可信（他的反应比起我们来要礼貌得多，也更委婉，但我们知道他的想法）。照这样想下去，我们不知道本专栏读者的反馈将会是什么，以及是否值得继续写下去。所以，我们就标题达成了一致意见，也请您务必告诉我们您的想法，电子邮件地址是 queuea@microsoft.com。
这样看来，闲话少说，我们进入正题......

问：为什么我应该喜欢 Exchange Server 2007？
答：我们知道以一个本来是营销问题的问题来作为首篇专栏文章的开始非常冒险，但我们非常喜欢 Exchange Server 2007，我们真的想与您分享它。因此我们将尝试限制答案中的“营销因素”，仅说明令 Exchange 管理员或用户喜欢 Exchange 2007 的许多技术原因中的少数几个，依次说明每个令人兴奋之处。

可伸缩性和性能的改进
首先是一个明显改进：64 位。你问这有什么大不了？解释一下，32 位 Windows® 只能支持总共 4GB（232 字节）的内存，其中 2GB 被内核默认占用，只为应用程序留下仅仅 2GB。当前版本的 Windows 支持在 boot.ini 文件中添加 /3GB 开关，这样可给予应用程序最多 3GB 的净内存空间，但一旦您使用该开关，Windows 内核会出现一点小问题，没过多久您就不得不重新启动服务器来回收资源。
令人高兴的是，随着对 Exchange 中基础数据库引擎 (JET) 的重大修改，64 位支持解决了这个问题。因为传统上 Exchange 服务器受磁盘 I/O 的限制要远远大于受任何其他系统资源（例如 CPU）的限制，增加系统内存意味着可通过在内存中保存更多信息，而不必读取磁盘，这可显著减少磁盘 I/O 操作。结果，使用 Exchange 2007 与使用 Exchange 2003 相比，可支持在相似配置的物理硬件上为用户提供大得多的邮箱。举例来说，我在 Microsoft 使用的邮件服务器支持 4000 位用户，每位 2GB 的邮箱配额，总共就是 6 千吉字节 (TB) 的数据。澄清一下，只是因为 Exchange 2007 可利用更多内存并不代表它需要那么多的内存 - 我们测试了运行着 32 位 Windows Server® 2003 和 Exchange 2003 的 4GB 或更少内存的邮件服务器，在安装 64 位 Windows Server 2003 和 Exchange 2007 后，性能非常接近。
Exchange 2007 同时包括两种提高可用性的新方法：群集连续复制 (CCR) 和本地连续复制 (LCR)。这些技术降低了能导致严重问题的存储故障风险。LCR 在相同的计算机上保持一份数据库的本地副本，但您也可以将它们存放在不同的存储媒体上。CCR 可在通过网络连接的两台计算机之间完成同样的事情。CCR，连同我们在本专栏开始略微谈及的磁盘 I/O 的改进，为存储硬件提供了新的选择；如果您想要使用直接连接的存储媒体（例如 SATA 或 SCSI 驱动器），现在正是更具成本效益、更高性能提升的选择。

管理
在 Exchange 2007 的全新管理体验方面 Microsoft 倾注了许多，其中包括图 1 所示的命令行界面。它是基于 Windows PowerShell™ 的组件，称为 Exchange 管理外壳 (EMS)。如果您不是命令行的拥趸，那就好 - 仍为您提供 GUI，只是现在它被称为 Exchange 管理控制台 (EMC)，而且相比旧的系统管理器，它是一套直观得多的界面（参见图 2）。如果您已经是命令行界面的提倡者或想要成为一名提倡者，请查看一下 Exchange 2007 中的 EMS 吧。
图 1 Exchange 管理外壳中的存储组状态
图 1 Exchange 管理外壳中的存储组状态
图 2 Exchange 管理控制台中的相同状态
图 2 Exchange 管理控制台中的相同状态
在 Exchange 2003 中，您可能必须使用 Windows 管理规范 (WMI) 脚本来执行一些更复杂的管理任务，但使用 EMS 时，任何看见“CD C:\TEMP”而不认为是新乐队专辑名的人都能完成这些任务（好冷的笑话）。尽管我们中的一位曾经是 UNIX 系统管理员，而因此您对我们的客观性可能有所怀疑，但是我们能向您指出大量没有偏见的第三方，他们可以担保，即使您以前从未使用过命令行，此外壳对您来说也是不可思议的直观（下期 Exchange Queue and A 专栏将做更多介绍）。
Windows PowerShell 其中一个优点就是，它是基于对象的。当您从服务器检索信息（例如邮箱或 SMTP 连接器的列表）时，信息自动存储在对象或变量中，并为方便阅读而以文本方式流向标准输出。然后该对象可以被直接传递给另一个命令，并在管道中进行操作（在此种情况下，它以对象而不是文本方式传递，这样易于修改数据或对其部分进行操作）。以下是一个简单的示例：
Get-Mailbox | Set-Mailbox -ProhibitSendQuota 250MB
Get-Mailbox 命令检索系统中的邮箱列表。“|”（称为管道符号）表示左侧的命令输出应当传递给右侧的命令。下一部分，“Set-Mailbox-ProhibitSendQuota 250MB”表示，所有这些邮箱现在都有 250MB 的配额限制，在达到配额大小后，它们无法再发送电子邮件。您也可以将其设置为 250000000、250000KB 或 .25GB - 在如何处理数据方面外壳非常具有灵活性。
Exchange 2007 中的另一个有用的管理改进是能够创建传输规则，使用与 Outlook 中的向导非常相似的规则向导，为流经您系统的邮件应用商业规则。想要根据正则表达式，阻止任何一封正文看来好像包含身份证号的电子邮件吗？检查。想要树立一堵隔离墙，使得您组织内的两个部门不能互相写电子邮件吗？检查。想要为每一封从您的组织发出的电子邮件都加上免责声明吗？检查。
最后一个我们非常喜欢的管理功能就是，可自定义系统消息：您现在可以创造性地将您自己自定义的文本，添加到未送达报告以及（最终！）用户超过存储配额后看到的消息中。

服务台帮助
许多客户的最大开支之一就是与在 Outlook 中配置新配置文件相关的服务台成本。借助 Outlook 2007 中的自动发现，只需要启动 Outlook，它将自动寻找您的电子邮件地址并使用服务连接点从 Active Directory® 检索您的 Exchange 服务器信息。如果您没有连接到 Active Directory，只需输入您的电子邮件地址和密码，自动发现查找功能可从指定的 Web 服务器（例如 http://autodiscover.contoso.com）中下载一个 XML 文件，这个 XML 文件包含例如 RPC over HTTP（现在称为“Outlook 无处不在”）所用服务器等的基本配置信息。
另一个服务台成本是，管理来自您的反垃圾邮件筛选器中的看似不可避免的误报。用户可在 Outlook 中保留一份发件人安全列表，榜上有名之人的邮件不用进行内容筛选，但在 Exchange 2007 以前，这些列表仅使邮件绕开 Outlook 筛选器。但是，因为 Exchange 筛选器在 Outlook 接触这些邮件之前就起作用，所以用户仍然可能错过来自他们信任的人的电子邮件。
Exchange 2007 在这方面也做出了改进：如果您对 Exchange 2007 中的不管是边缘还是中心服务器角色使用反垃圾邮件内容筛选器，您可以配置它，将用户的安全发件人列表传播到那台服务器，这样来自那些发送者的邮件就将绕开垃圾邮件内容筛选器。当然，对一个用户来说是垃圾邮件的信件，对另一个用户来说可能是新闻稿，因此安全发送者聚合是每一位用户各不相同的。

最终用户满意
借助 Exchange 2007 中的统一消息 (UM)，您可以在收件箱中接收入站语音邮件和传真。（如果您以前从未尝试过，您不会知道您错过了什么。）您也可以给您的 Exchange 服务器打电话，告诉它通知早上 8 点钟会议的每一位参加者，您迟到了。即使是最小规模的组织也能轻松拥有自定义和全新的自动助理，这样当您的客户打电话给您时，系统可正确引导他们。要使用 UM，您需要一台基于 IP 的 PBX (IP/PBX) 或您可以将传统的基于电路交换的 PBX 挂接到 IP 电话 (VoIP) 网关上。
Link Access 是 OWA 2007 中的新功能。如果没有安装 VPN 客户端而您在路上又需要查看公司网络中的文件共享或 SharePoint® 站点上的 Microsoft Word 文档，该怎么办？没问题 - 只需加载 OWA 2007，转到“文档”链接，然后键入共享名称或 SharePoint 站点（http://mysharepointsite 或 \\server\share），浏览并打开文件即可。当然，有许多为管理员准备的安全控制措施，以便他们随心所欲地锁定此功能 - 允许除特定列表外的所有服务器、拒绝除特定列表外的所有服务器、仅在用户从私人计算机登录 OWA 时允许访问文档等等。
OWA 还包括 WebReady Document Viewing 功能（这在通俗说法中叫“代码转换”），就是如果本地没有安装正确的应用程序，您可以通知 Exchange 将特定文件类型渲染为 HTML。Exchange 2007 发售时将会默认支持以下文件类型的代码转换：DOC、DOT、RTF、WBK、WIZ、XLS、XLK、PPT、PPS、POT、PWS 和 PDF。代码转换引擎具有可插入体系结构，因此我们可以在 Service Pack 中为新的文件类型添加支持。当然也有管理选项，以便您可决定允许用户对哪些文件类型进行代码转换，或是完全不允许代码转换。
如果您拥有使用 Exchange ActiveSync® 与 Exchange 同步的移动设备，您会很高兴知道，当您答复或转发电子邮件线索时，邮件不会再被转换为纯文本。您的文本会添加到顶部，但邮件剩余部分的 HTML 正文保持原样。这项功能对任何支持 ActiveSync 的设备都有效，它不需要利用客户端的功能。

问：我听说 Exchange 2007“仅用于生产目的时才提供 64 位版本”。这是什么意思？
答：Exchange 2007 同时提供 32 位和 64 位两种版本。64 位版本是供核心服务器角色（邮箱、中心传输、边缘传输、客户端访问、统一消息）在生产中“实时”使用的。32 位版本是供评估 Exchange 2007 的新功能时使用的。32 位版本中的管理工具也可用在生产中，以便您从 32 位 Windows XP 台式计算机管理您的 64 位 Exchange 2007 生产服务器。同时请注意 Exchange 2007 架构必须从位于根域的计算机安装 - Exchange 本身不需要安装在根域中，但我们需要架构扩展在根域中出现，做为一种确保与架构主机的良好网络连接性的方法。如果在此域中没有 64 位服务器，您可以运行 32 位版本的 setup.exe 来扩展架构。
我听见您询问，32 位服务器有什么问题？如果您有过在一个服务器上运行成千上万个用户的快乐体验，您就会了解在我们之前描述过的内存限制下，性能和稳定性之间确实是存在平衡过程。如果您最近两年买过新计算机，有可能它已经支持 x64 扩展。事实上，现在要买到不支持 64 位模式的新计算机相当困难。因此，可能在您的环境中已经运行着 Exchange 的计算机有能力使用 64 位；只是它运行着 32 位操作系统而已。这种情况对我们很有利 - 一旦您购买了新的支持 64 位的计算机，记住安装 64 位版本的 Windows Server 2003 SP1。
那么为什么您在安装过程中，会见到关于生产中不能使用 32 位安装的所有警告？虽然以多种指令长度编译 Exchange 非常容易，但每个组件都是百分之百为 64 位优化和调整过的（在 64 位系统中我们为取得磁盘 I/O 方面的改进而选择的一些代码路径，实际上在 32 位环境中会导致性能下降）。事实上，当您用 32 位系统工作时，甚至未曾考虑使它在负载（模拟或其他方法）下运行；您不会得到它在 64 位系统中的性能表现，或这台服务器可以承载多少用户的真实画面。
所以都清楚了吗？您可以使用 32 位版本的 Exchange 2007 来：
  • 在没有实时用户邮箱的测试服务器上评估新功能。
  • 对着新管理控制台、外壳或 OWA 界面流口水（但请注意不要滴到键盘里）。
  • 管理您的 Exchange 2007 服务器。
  • 在您的 Active Directory 林中扩展架构。
一旦您准备好迁移邮箱，需要使服务器运行 64 位操作系统和 64 位 Exchange 2007。如果不这样，setup 和 ExBPA 都会对您“哀鸣”（参见图 3）。Paul 肯定知道这些 - 代码是他编写的！
图 3 尝试在只应当安装 64 位的地方安装 32 位
图 3 尝试在只应当安装 64 位的地方安装 32 位

问：运行 Exchange 2007 我需要多少钱？
答：基本安装需要至少 1GB 的物理 RAM。正如我之前提到的，某些服务器角色负担很重。如果您希望安装一个多功能一体化服务器（例如邮箱、客户端访问、中心传输和统一消息），您可能要从 2GB 开始，再根据邮箱的数量和使用情况调整。如果您希望安装边缘角色或群集，那么以上角色需要安装到单独的计算机上。群集只能安装邮箱角色 - 其他什么都不行。
听到下面这个消息您会非常兴奋的，那就是您终于可以在 Exchange 服务器上安装超过 4GB 的 RAM 了。当前许多计算机都支持 6GB 或 8GB 的标准配置，而将那些数据发现记录 (DDR) 模块取下，或者使用 /BurnMemory 使 RAM 降到 4GB 总是奇耻大辱（不幸的是，如果内存超过 4GB，Exchange 2003 将执行效率更低、更不稳定 - 有关详细信息，请参阅 go.microsoft.com/fwlink/?LinkId=76537）。
对于基础结构服务器（中心、客户端访问和诸如此类）来说，少于 4GB 的 RAM 也运行得不错，即使在最重的负载条件下也是如此。您希望花钱的地方应该是邮箱服务器。您可以扔给它多少内存，最新优化的 64 位 JET 缓存就会利用多少。当然，与 Exchange 2003 不同，Exchange 2007 支持最多 50 个存储组。
虽然每个存储组可支持多个数据库，但这不会真正花费您任何成本 - 特别是 LCR 和 CCR（我们之前讨论过的数据库复制的两种形式）只能用于单个数据库的存储组。如果您打算创建多个存储组，那就当然必须给那些额外的 RAM 加电，否则每个用户 2GB+ 邮箱就只能是个梦。在 Exchange team blog（英文）上有一些关于确定 RAM 容量的很棒的详细信息，而图 4 和 5 提供了简要说明供您入门。
Figure 5 RAM 和存储组 (Close Figure 5)

物理 RAM | 最大推荐存储组
2GB | 2
4GB | 8
8GB | 24
12GB | 40
16GB+ | 50
Figure 4 按用户类型分类的 RAM (Close Figure 4)

用户类型 | 邮箱角色内存推荐值
轻负载 | 基本的 2GB + 每邮箱 2MB
平均负载 | 基本的 2GB + 每邮箱 3.5MB
重负载 | 基本的 2GB + 每邮箱 5MB
另外，Microsoft IT 使用数量是七的倍数的许多存储组，因为为它们制定了轮流备份计划，通过实施这个计划，在指定的任何一天，仅有少数存储组进行备份。我们称这个计划为“糖果杖备份”，因为说明备份计划的 Excel 电子表格里，在指定的任何一天进行备份的存储组会用级联的红色来标识。希望这些会有帮助。请发送“真实的”问题以在下一期杂志中发表。

KC Lemson 是一位 Exchange Server 团队的首席程序经理。她利用空闲时间帮助保护尼日利亚皇室的财产。
Paul Bowden 是一位 Exchange Server 团队的首席程序经理。她利用她的空闲时间帮助保护尼日利亚皇室的财产。Paul Bowden 也是一位 Exchange Server 团队的首席程序经理。他的大部分空闲时间都花在应请求重新确认他的 PayPal 帐户信息上。


 安全观察: Windows Vista 中的服务增强
安全观察
Windows Vista 中的服务增强
Wole Moses

因为曾经出现过一些破坏 Windows 系统、瘫痪 IT 部门的高级病毒和蠕虫，给企业和消费者带来了巨大损失，所以 Microsoft 在 2002 年初推出了“可信赖计算计划”。在该计划中，Microsoft 发布了
关于其安全跟踪记录的过错系统，迅速修正了发展目标，开始把开发软件的重点由提高功能和可用性更改为优先保证软件的安全性和完整性。在 2003 年 8 月爆发的 Blaster 蠕虫进一步推动了安全计划的发展。（有关 Blaster 的信息，请参阅侧栏“克隆攻击”。）
可信赖计算计划的宗旨是：“设计安全”、“默认安全”和“部署安全”，分别表示：编写安全的代码；确保 Windows® 的组件在默认情况下是最安全的；创建工具和规定性指导以帮助企业和消费者确保其 Windows 基础结构的安全性。
总体而言，“可信赖计算计划”极大地增强了安全性，但不幸的是，因为 Windows XP 比该计划早两年发布，所以 Windows XP 从来没有充分享受该计划的优势。（在 Windows XP Service Pack 2，也就是 Windows XP SP2 中，虽然在开发时作出了很大努力，但 Windows XP 还是无法完全满足该计划的要求。）
因此，Windows Vista™ 是第一款完全兼容“可信赖计算”的 Microsoft 桌面操作系统。“Windows Vista 服务增强”是“可信赖计算默认安全”原则的一种特定实现（参见图 1），它是一种重要的新功能，旨在防止非法的服务行为，现在很多恶意软件正是通过这些行为来执行的。“服务增强”使 Microsoft 在更改 Windows 服务的默认行为和安全配置文件上取得了巨大进步。
Figure 1 默认安全：Windows 服务 (Close Figure 1)

功能 | 说明 | 结果
最低权限 | Windows Vista 服务配置为以所需的最低权限运行。 | Windows Vista 减少了可用于 Windows 服务的默认安全权限，降低了恶意软件的潜在威胁。
服务隔离 | 服务 SID 使服务可在低权限的帐户中运行。 | Windows Vista 根据服务 SID 限制了对资源的访问，因此可防止恶意软件。
受限网络访问 | 所有 Windows Vista 服务中都实施了现有的网络限制。 | Windows Vista 降低了恶意软件使用服务执行非法网络活动的可能性。
会话 0 隔离 | 只有服务才可在会话 0 中运行。 | 因为 Windows Vista 中应用程序和服务在不同的会话中运行，所以恶意应用程序难以再使用基于消息的攻击来控制权限较高的服务。

风险服务
Windows 服务（过去称为 NT 服务），是长时间运行在其自身的 Windows 会话中的可执行应用程序。可以在启动计算机时自动开始服务，通常也可以在不显示任何用户界面的情况下暂停和重启服务，还可以在特定帐户（该帐户不同于登录用户或默认计算机帐户）的安全上下文中运行服务。因此，Windows 服务会给某些特定应用程序的开发人员和需要使用这些应用程序的最终用户带来很大的便利。但正是因为其具有强大的功能和灵活性，Windows 服务以前非常容易被非法利用，原因如下。
首先，过去往往只有拥有较高权限的 Windows 帐户（例如“本地系统”帐户）才可以运行 Windows 服务。如果在“本地系统”帐户中所运行的服务被恶意软件破坏，那么该恶意软件很可能就可以在该系统上为所欲为。以 Windows XP 中的远程过程调用 (RPC) 服务为例。在 Windows XP SP2 之前，RPC 服务在“本地系统”帐户下运行，这使得 Blaster、Welchia 和其他蠕虫可利用 RPC 漏洞来执行管理员任务。
其次，很多服务都是面向网络的，这样恶意软件就可以从网络上建立入站连接，从而对这些服务加以利用，而且被感染的服务也可能建立出站连接，从而感染其他系统，或者执行转发所监控的击键等其他违法行为。现在的大多数蠕虫和恶意软件都是通过某种网络连接的方式进行传播的。
最后，服务通常是长时间运行的，它们往往从系统启动时就开始运行，一直到系统关闭时才停止。对恶意软件编写者而言，这是一个好消息。因为只要系统还在运行，他们就可以寻找服务的漏洞，这使得恶意软件具有充足的时间来从事一些邪恶的活动。

克隆攻击
这可以被视为规模最大的攻击。如果一切按计划进行，攻击程序很快就可控制世界上数十万个 Windows 系统，并向这些系统发送任何指令，然后就可轻松地指挥这些系统执行它的每一条命令。
攻击程序所采用的攻击手段持续时间长，而且难以发现，因此它可秘密地搜索某些计算机系统，查找比较容易侵入的入口点。不过攻击程序通常很快就会找到入口点，因为它很清楚如何利用未经修补的系统上所存在的漏洞。
这样的漏洞往往是灾难性的，因为只要成功利用了该漏洞，攻击程序就可以获得系统的完全管理访问权限。它不仅仅是控制了所有帐户，而且还操纵了 Windows 中功能最强大的管理帐户。这样该攻击程序的行为就变得不可阻挡。
经过一段时间的试探后，攻击程序在未经修补且存在漏洞的机器上测试了自己的恶意代码，随后它就开始运行了！这样攻击程序很容易就获得了计算机的所有权限。于是它就会利用管理访问权限强制计算机下载并安装特洛伊木马代码，修改注册表，然后重新启动，这样被感染的系统就成为了攻击程序的傀儡，开始执行其下达的命令。修改注册表后，每次重新启动计算机时都会运行恶意软件。
现在攻击程序的意图很清楚了。任何被感染的机器都会搜索网络上所有其他机器的特定网络端口。如果该网络端口处于打开状态，且这台机器存在漏洞，攻击程序就会把特洛伊木马代码下载并安装到这台新机器上。和之前被感染的机器一样，这台新机器的注册表也会被修改。这样的攻击行为会不断的重复，于是急剧膨胀的克隆攻击大军就形成了。到最后，世界上数千个 Windows 系统成为了攻击程序的恶意克隆大军中的一员，这些系统无法响应其他系统发来的任何命令。
攻击程序似乎并不满足，它随后又盯上了 Microsoft Windows Update 站点，并且命令其克隆大军在 2003 年 8 月 15 日发动了“拒绝服务攻击”，试图阻止世界上所有的计算机下载漏洞修补程序，但有趣的是，该修补程序在数月前就可以下载了。
现在您应该知道了，刚才描述的就是在 2003 年 8 月 MS Blaster 蠕虫的大爆发，这种蠕虫当时攻击了世界各地的 Windows 计算机。Blaster 无疑是对 Windows 最严重的攻击手段之一，它造成了数十亿美元的损失。具有讽刺意味的是，尽管 MS Blaster 对被感染的机器有巨大的破坏作用，但是其编写过程却十分简单。

Blaster 的工作方式
Blaster 和其变种是利用了 Windows RPC 服务中的漏洞来执行缓冲区溢出。成功利用该漏洞的攻击者，可以在被感染的系统上使用“本地系统”权限运行代码，从而能够在系统上执行任何操作，如安装程序，查看、更改或删除数据，以及创建具有完全权限的新帐户。
例如，Blaster 蠕虫会自动扫描网络，查找 TCP 端口 135 打开的计算机。一旦锁定受害者，Blaster 就会尝试利用 RPC 漏洞。如果成功利用了该漏洞，它就会连接到受害者计算机上的端口 4444，然后命令这台计算机启动简单文件传输协议 (TFTP)，并且从被感染的系统上下载名为 MSBLAST.EXE 的蠕虫副本。（TFTP 是 Windows 2000、Windows XP 和 Windows Server 2003 操作系统的一部分。）攻击系统随后会命令新感染的计算机启动 MSBLAST.EXE，这样受害者计算机就变成了新的攻击者。Blaster 还会在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run 注册表项中写入代码，这样每次启动计算机时都会运行该蠕虫。

服务增强
Windows Vista 通过下列四种方法增强了服务的安全性：以最低权限运行服务、服务隔离、受限网络访问以及会话 0 隔离。下面详细讨论这四种方法。
以最低权限运行 过去有很多 Windows 服务都在“本地系统”帐户的上下文中运行，而该帐户正是 Windows 中权限最高的帐户。“本地系统”帐户拥有大量的用户权限和特权，例如可以访问几乎所有的系统对象或另一个用户的配置文件、模拟用户、打开敏感注册表项（如 HKLM\SECURITY）以及把计算机的凭据提供给远程服务器。因为恶意软件编写者渴望拥有访问和控制 Windows 的最高权限，所以任何在“本地系统安全”上下文中运行的服务都会成为绝佳的攻击目标。
事实上，对于很多被配置为在“本地系统”帐户下运行的 Windows 服务，只需要拥有“本地系统”帐户的少量权限就可运行。而不幸的是，由于 Windows XP 和之前的 Windows 版本以“全有或全无”的方式运行，您无法为这些服务挑选所需的权限。因此，最终很多 Windows 服务不得不通过大量自己不需要的安全权限运行。
为了解决这个问题，“Windows Vista 服务增强”把最低权限的概念引入到服务配置中。最低权限可以使服务只需少量必要的权限就可运行，而不是强制它们必须通过用于登录的帐户所分配的全部默认权限运行。
例如，某个服务需要作为操作系统的一部分才可运行，但是这个服务无需创建安全令牌。使用最低权限后，您就可以删除令牌创建权限了。这样就减轻了攻击者今后利用该服务的漏洞进行攻击所造成的破坏。开发人员可使用 SC.exe（参见图 2）等命令行工具或编程方法来定义和指定其特定服务所需的权限。Microsoft 应用现有的最低权限降低了所有预安装的 Windows Vista 服务的默认权限。
图 2 SC 命令选项定义 Windows Vista 服务权限
图 2 SC 命令选项定义 Windows Vista 服务权限
服务隔离 在 Windows Vista 之前的 Windows 版本中，服务需要访问特权对象（如敏感注册表项或文件）时，会通过下列三种方法来进行访问：使用“本地系统”帐户访问对象；降低注册表项或文件的安全性，从而启用权限较低的服务帐户来进行访问；或者专门为该服务创建一个帐户，并只允许通过该帐户访问对象。
虽然这三种方法都可以访问特权对象，但是它们都有其自身的基本问题。前两种方法都存在内在的风险，而最后一种方法必须手动管理新帐户的密码，这是非常不方便的。
例如，假设某防病毒程序安装了一个服务，而且这个服务需要访问与防病毒软件相关的病毒签名文件和注册表项等敏感系统对象。如果防病毒服务配置为使用“本地系统”帐户或其他任何拥有相关权限的内置安全帐户来访问它的对象，那么该帐户所使用的 Windows 服务一旦被恶意软件感染，此恶意软件就可以访问和修改防病毒签名文件、改变影响防病毒软件工作的注册表设置，或者只关闭所有的防病毒服务。实际上，今天的恶意软件正是利用某些尖端技术来隐藏自己并进行破坏。
Windows Vista 采用服务隔离来解决这些安全性和管理性的问题，此方法使用包含服务安全 ID (SID) 的访问控制项来保证资源（例如文件或注册表项访问）的安全，这样服务就可保留其独占使用的对象。因此，示例中描述的防病毒服务能够通过低权限的帐户运行，但是它同样可访问敏感的签名文件或注册表项。要访问这些敏感内容，在低权限的帐户中所运行的防病毒服务需要获得由 Windows Vista 分配的 SID。分配 SID 后，该防病毒程序就可修改其文件系统和注册表对象的访问控制列表 (ACL)，以获取该防病毒服务的独占访问权。
下面是另一个示例。早在 2003 年，Welchia 蠕虫就开始利用 RPC 漏洞将自己写入 %System%\Wins\Dllhost.exe 中。它还向 HKLM\SYSTEM\CurrentControlSet\Services 中添加项，从而把自己的服务安装到被感染的 Windows 系统里。但是现在 Windows Vista 限制了对特定的相关服务位置的访问，并且使用低权限的帐户为这些服务授予访问权限，这样就有效防止了 Welchia 的肆虐。
受限网络访问 Windows Vista 以 Windows XP SP2 的防火墙为基础构建了新的防火墙。主要的新功能包括出站过滤和 IPsec 集成。新的防火墙同样集成了“Windows Vista 服务增强”，这使得恶意软件更加难以利用 Windows 服务执行某些非法的网络活动。
在 Windows Vista 防火墙中，Windows 服务都分配有网络防火墙策略，这些策略限制了服务行为。例如，可以将“无网络访问”限制分配给“即插即用”等从来不需要通过网络端口通信的服务。该限制就位后，以这些特定服务为目标的攻击程序再也无法通过某些基于网络的途径来攻击这类服务。任何试图通过该受限服务的通信（无论是入站通信还是出站通信）都会被防火墙阻止。可以将其他需要合法访问网络的服务配置为仅使用某些特定端口。开发人员可利用该功能限制其服务的网络访问。
网络限制与“服务增强”相结合，可有效防御基于潜在服务的攻击，与以前的 Windows 版本相比，这是一个巨大的进步。以前，Windows 无法决定可通过网络进行通信的服务、方式以及位置。但是现在通过 Windows Vista 针对 RPC 服务的防火墙网络限制，可以防止 Blaster、Sasser 或 Welchia 等病毒使用被感染的服务与其他机器通信。
会话 0 隔离 Windows XP 中的“快速用户切换”把每个用户放置在不同的 Windows 会话中，这样多个用户可同时登录系统。会话 0 是在系统启动时创建的，还可根据需要添加更多的会话。服务总是在会话 0 中运行，而且在 Windows Vista 之前的 Windows 版本中，用户应用程序也可以在会话 0 中运行。但是，在同一个会话中运行用户应用程序和 Windows 服务会给系统安全带来潜在的安全风险，因为此时服务以提升的权限运行，因此会成为那些正在伺机提升自身权限级别的恶意软件的目标。
Windows Vista 通过下列方法降低这些安全风险：只允许服务在会话 0 中运行、在其他会话中运行应用程序以及把会话 0 设置为非交互式会话（表示服务不能创建对话框、提示等最终用户可访问的用户界面）。不过也正是因为这些更改，会话 0 隔离会影响不同开发人员所开发的 Windows 服务或驱动程序之间的应用程序兼容性。

总结
Windows Vista 是 Microsoft 第一款全面的“可信赖计算”桌面操作系统版本，该版本的功能显著增强，在保护 Windows 用户方面取得了较大的成功。当然，计算机安全也在不断发展，而且毫无疑问的是，恶意软件编写者们会继续探寻新的方法来攻击 Windows。但是 Windows Vista 中新的“服务增强”功能强化了默认的安全设置，减少了易受攻击的范围，使得安全性显著提高。有关这些重大改进的详细信息，请参阅 microsoft.com/whdc/system/vista/Vista_Services.mspx。

Wole Moses 是一位 Microsoft 地区 Windows 经理，同时也是一位已经在 Microsoft 工作了八年的专家。Wole 目前在土耳其的伊斯坦布尔工作，与中东和非洲地区数量最多的新市场客户合作，帮助他们构想和设计基于 Microsoft 的解决方案，以优化他们的 IT 基础结构，同时在最大程度上保证其安全性。


 桌面文件: Windows 自动安装工具包
桌面文件
Windows 自动安装工具包
Wes Miller

Microsoft 以前曾提供过由 Windows 部署团队制作的两个版本的部署工具。第一个版本以 deploy.cab 文件的形式发布，多年来一直随 Windows CD 提供。其中包含多种文档和工具，例如用于创建无人参与安装文件的“安装管理器”，
以及用于进行部署前桌面准备工作的 Sysprep 工具。部署工具的另一个版本是 OEM 预安装工具包 (OPK)，专门为满足 OEM 系统制造商的需要而设计，并只向他们提供。这是 Windows® PE 最初的分发方式。Windows Vista™ 采用新版本的 OPK，但这一新版本仍只提供给 OEM。
对于大多数其他 Microsoft 用户来说，尽管他们中的一些人在 Windows XP 时期未能获得 Windows PE，但幸运的是这种情况将不会持续下去，他们将可以使用一种与 OPK 十分类似的工具包，即 Windows 自动安装工具包 (WAIK)。当 Windows Vista 上市后，可在 microsoft.com/downloads 免费下载 WAIK，其中包括以下组件：Windows PE 2.0、Windows 部署服务和 ImageX，Windows 系统映像管理器是我以前从未提到过的一种工具，它可以创建用于实现自动安装的 unattend.xml 文件。此外，WAIK 中还包含所有工具的完整文档。
请注意，获得 WAIK 的推荐方法是从 microsoft.com/desktopdeployment 下载完整的 Business Desktop Deployment Solution Accelerator (BDD)，其中不仅包括 WAIK，还包括 User State Migration Tool (USMT) 和 Application Compatibility Toolkit (ACT)。BDD 中还包含用于成功部署 Windows Vista 的其他工具和指导。

Windows PE 2.0
我曾在 TechNet 杂志 2006 年 11 月刊中深入地探讨了 Windows PE 2.0，所以在此不再赘述，只想说明一下 WAIK 将提供用于 Windows Vista 的新版 Windows PE 的官方发行版本。了解 Windows PE 是很重要的，因为 WAIK 中的所有其他工具要么以某种方式使用 Windows PE，要么与之配合使用。您可以在此处找到我关于 Windows PE 2.0 的文章。

ImageX
在上期专栏中，我花费了大量时间介绍 Windows 映像 (WIM) 文件格式。（请参阅 microsoft.com/technet/technetmag/issues/2006/12/desktopfiles。）现在来看一下 ImageX，这是一个小巧但功能强大的命令行工具，它使 Windows Vista 的内置映像成为可能。在设计 ImageX 时，我们曾经考虑过创建基于 GUI 的工具，但由于映像过程的自动化是一个关键的设计要素，因此最后决定侧重于命令行。要查看 ImageX 的命令行选项，请参见图 1。
图 1 ImageX 命令行工具的使用
图 1 ImageX 命令行工具的使用
我稍后要介绍的 Windows 部署服务 (WDS) 包括一个轻量的 GUI 工具，可以轻松地捕获映像，但并不具备 ImageX 的全部功能。特别要注意的是，ImageX 的用途是为实现 Windows PE 下的部署而捕获映像，并基于此设计思想进行了测试。其设计初衷并非用于“实时”捕获正在运行的 Windows 系统的映像。
如果您熟悉其他的系统映像工具，那么就会对 ImageX 有一定程度的了解。其设计旨在简化工具的使用，使您能够轻松捕获和应用映像，它还提供了以前常用的部署工具中经常缺乏或不完善的关键功能。我稍后会讲到一个例子，来说明 ImageX 能够简单且透明地将映像作为本地文件系统的一部分来装载，使您可以在现有映像中查看、修改或删除文件。
ImageX 提供了一些映像操作开关，如图 2 所示。我准备找几个特定命令来更深入地进行说明。
Figure 2 映像操作开关 (Close Figure 2)

开关 | 说明
IMAGEX /APPEND | 可以将新的卷映像附加到已包含现有卷映像的 WIM 文件中。
IMAGEX /APPLY | 可以将卷映像应用于已进行分区或格式化的卷。
IMAGEX /CAPTURE | 可以将初始卷映像捕获到 WIM 文件中。
IMAGEX /DELETE | 可以从 WIM 文件中永久删除卷映像的引用。请注意这会删除元数据。而不会删除压缩文件数据，这可以通过使用 /export 开关创建全新的 WIM 文件来实现。
IMAGEX /DIR | 可以显示 WIM 文件中指定卷映像的目录树。
IMAGEX /EXPORT | 可以从一个 WIM 文件或几个拆分 WIM (SWM) 文件中导出卷映像。
IMAGEX /INFO | 可以显示给定卷映像或 WIM 文件的详细信息，也可以为包含 Windows PE 的给定卷映像设置 /boot 选项。只有 Windows PE 可以从 WIM 文件进行引导。
IMAGEX /SPLIT | 可以将一个 WIM 文件拆分成一个或多个更小的 SWM 文件，从而可以包含在多张 CD 或 DVD 中。
Capture 命令相对好理解一些，主要应记住一点，那就是对于每个 WIM 只能使用一次 Capture 命令。由于一个 WIM 文件就是一次文件捕获，您可以捕获整个卷 (C:)，也可以仅捕获一个目录 (C:\Test)。在应用映像时也是如此，可以将映像应用于一个目录（即使已经捕获了整个卷）或卷的根目录（更常见）。如果 WIM 中已经存在一个卷映像 ，可使用 append 命令来继续添加。Apply 命令也相对较为简单，仅仅在应用多个 WIM 文件时才会变得复杂。delete 命令可用于删除对某个特定卷映像的引用，但为了彻底删除该映像的数据，必须使用 export 命令来创建一个不含这些数据的新 WIM（这意味着，如果要通过删除剩余数据来减小映像的大小，则必须使用 export 命令）。您可以将 export 视为类似于碎片整理程序或合并程序的工具，用来将卷映像组合到一个或多个 WIM 文件中，或将其导出到自身完全独立的 WIM 文件中。ImageX 还提供了以下映像编辑开关：IMAGEX /MOUNT、IMAGEX /MOUNTRW 和 IMAGEX /UNMOUNT。
如上所述，产品团队从一开始就在映像工具和格式中集成了编辑功能。启用编辑功能后，格式和工具允许用户根据需要复制文件、应用服务包、添加/删除文件或独立程序，或者从映像中添加/删除数据（甚至装载和修改注册表）。映像的维护始终是关注的重点。
您可以将装载映像的过程视为将 WIM 文件加载为虚拟目录的过程。如果您对它们很熟悉，它其实更像是一个卷装入点，用于将整个卷装载到另一个卷中的某个目录（例如，使 F: 显示为 C:\DriveF)。您也许用过类似的 Microsoft® Virtual CD 工具或其他 ISO 装载工具，它们可以将 ISO (CD) 映像装载为本地驱动器。同样地，ImageX 也可以将 WIM 文件作为一个覆盖段而装载到某个目录之上。您可以创建目录，然后使用 mount 命令在目录之上覆盖指定的卷映像，就像在此处应用过一样。
然而，与 Virtual CD 工具不同的是，即使 WIM 映像位于网络共享位置或可移动媒体中，您仍然可以装载。当然，这样做可能会限制编辑能力，光学媒体（CD 或 DVD）上的 WIM 通常在只读模式下才可以编辑。如果在读/写模式下编辑，您每次只能在一个 WIM 中编辑一个卷映像，这样在卸载时才可以正确地锁定并安全地更新文件。
您可以只读 (/mount) 或读/写 (/mountrw) 模式装载映像。使用读/写模式时，您对于映像所作的所有修改都会暂时缓存起来（它们不会立即生效），直到您运行带有 /commit 选项的 /unmount 命令时，这些更改才会永久地保存到 WIM 文件中。如果在更改后决定不保留更改内容，您还可以在卸载映像时放弃这些更改，而不进行提交。提交或删除操作必须针对缓存中的全部内容，在 WIM 文件装载期间的所有写入内容要么全部提交，要么全部放弃。
此处还有一个特别需要注意的地方。就像 delete 命令一样，当您使用读/写功能编辑 WIM 时，WIM 文件本身的文件数据并没有完全擦除或清除，这些文件附加到 WIM 文件的结尾处，而卷映像中先前的引用被更新过的数据所代替。这意味着如果您添加了一个 5MB 的新文件来替换同等大小的已有文件，您的映像会增加，增加的大小等于新文件在压缩之后的大小（即 5MB 或更小，取决于所用的压缩类型）。要从 WIM 中删除旧数据（如果要压缩映像），您将需要使用 /export 将卷映像导出到一个全新的 WIM 文件中。
如果您阅读了我在 TechNet 杂志 2006 年 11 月刊中对 Windows PE 2.0 的探讨，就会想到它支持从 WIM 引导。引导时会使用驱动程序来读取 WIM 文件，这与 ImageX 相类似。但 ImageX 的支持功能专供设计时使用，而 WIM 引导功能是只读的，专供 Windows PE 使用。因此虽然它们很相似，但其驱动程序和实现形式各不相同。
除 ImageX 工具外，Microsoft 还提供了正式文档化的 API，即 WIMGAPI，它完全支持可以捕获、应用或修改 WIM 文件的映像工具。因此如果第三方要添加映像支持或替换现有映像基础结构，都可通过使用 WIMGAPI 来实现。此 API 是 WAIK 的一部分，因此与其一起分发。

Windows 基于映像的安装
新安装引擎基于映像格式而设计。其核心部分更像以前的“最小化安装”或“欢迎使用 Windows”，在从 Windows 安装 DVD 的 install.wim 安装映像之前，它会询问唯一安装和配置系统所需的基本问题，同时处理磁盘配置。新安装引擎的主要目标是能够手动安装 Windows。我们预见到会有许多 OEM 和企业客户使用 ImageX 进行实际部署。

远程安装服务
此时，您可能会问为什么我没有探讨远程安装服务 (RIS)。RIS 也是我在 Windows 部署团队开始工作时接手的。RIS 最初随附于 Windows 2000，然后又出现在 Windows Server® 2003 中，它使用“预引导执行环境”(PXE) 来将计算机引导到可以完成基本向导并且可以进行 Windows 安装的程度，这一切都是通过网络实现的。
RIS 最大的一个问题在于其非常脆弱。RIS 最初只有 Windows 2000 Professional 可以支持，到了 Windows Server 2003 时期，它扩展为支持 Windows 服务器版本。随着串行 ATA (SATA) 存储控制器和 GB 以上级别 NIC 的涌现，要在 RIS 中保持最新的驱动程序始终是困难重重。此外，RIS 不支持许多 Windows 所支持的语言环境，这意味着使用本地化键盘来安装本地化版本的 Windows 会非常困难，尽管这并不是不可能的。Windows 部署服务专用于将 Windows 安装和 RIS 组合在一起，即实现由 PXE 启动的 Windows PE 引导，从而允许您通过网络来部署 WIM 文件。
WDS 不仅可以在即将发行的代码名为“Longhorn”的 Windows Server 中使用，而且也可以作为更新版本安装在 Windows Server 2003 上。这意味着 WDS 既可以从 Windows Server 的早期版本部署 Windows Vista，又可以部署 Windows 的早期版本。事实上，WDS 不仅会与 RIS 配合工作，要使它进行工作也必须安装 RIS。这是因为它需要将 RIS 基础结构更新为能够与 WDS 兼容，同时它也提供了新的 WDS 基础结构。
WDS 作为 RIS 的升级为客户提供了良好的迁移路径，使客户能够在继续使用 Windows 早期版本的同时开始部署 Windows Vista。此外，它还提供了比 RIS 更好的管理工具，可以更加轻松地将新映像添加到服务器中。此外，它还提供了可插入式 PXE 框架，这意味着第三方 PXE 服务器可以集成进来，并指定代替 WDS 来应答特定客户的 PXE 请求。我们过去经常会收到要求 RIS 实现这种功能的请求，而在那时我们没能提供这样的 RIS。
除最初作为可在 Windows Server 2003 上安装的用于更新 RIS 的组件外，WDS 还将作为 Windows Server“Longhorn”产品的集成组件发布。Microsoft 目前还计划将 WDS 功能包含在 SMS（称为“System Center Configuration Manager”）未来的版本中。
WDS 通过提供 Windows PE 2.0 的 PXE 引导版本来运行。这一映像包含在 WIM 中（意味着减少了网络中传输的数据量），并通过网络引导到 RAMDisk 中。然后会使用包含过去 RIS 基本 OSChooser 应用程序功能的新客户端应用程序，在 Windows PE 下进行安装。
尽管 WDS 不支持 Windows XP、Windows 2000 或 Windows Server 2003 的原样 RIS 映像，但能够部署它们的 Sysprep 映像。WDS 还像以前的 RIS 一样集成到了 Active Directory® 中，但必要时，PXE 服务器无需 Active Directory 也可以运行。WDS 甚至可以从 PXE 以外的其他组件所引导的 Windows PE 启动，这些组件包括 CD、DVD 或 USB 闪存驱动器 (UFD) 等等。这是一个非常有用的功能，而 RIS 无法提供。
WDS 可以在三种有效的模式下操作，这取决于当前使用的 RIS：
传统 WDS 已安装了二进制文件，但将 OSChooser 作为引导机制。RIS 所包含的脚本安装和基于映像的安装工具 RISetup 和 RIPrep 仍然有效。
混合模式 可以使用每种引导机制，并且每种映像工具集和每种管理工具集都有效。
本机 没有 RIS 功能，只能使用 WIM 功能、Windows PE 引导和新的管理工具。请注意，这是计划在 Windows Server“Longhorn”中提供的唯一模式，它不包含任何 RIS 功能。
WDS 还实现了一个自定义客户端-服务器通信协议，结果，OEM 或企业客户理论上也可以建立自己的部署应用程序。
将 WIM 映像捕获到 WDS 服务器的过程与我曾介绍的 Sysprep 的情形几乎相同。区别在于，前者在最后一步中将引导到 WDS 捕获映像（一种用于帮助捕获客户端系统的 Windows PE 映像）并将其捕获到 WDS 服务器。
WDS 的核心组件如下：WDS 服务器服务、PXE 服务器、映像存储、通信协议、使用 Windows PE 映像的文件共享（需要引导）、WIM 映像（需要安装）和其他相关的管理文件。
WDS 经过专门设计，相对轻量，并提供与基于传统光学媒体的 Windows 安装几乎相同的体验（常常更快）。WDS 作为 RIS 更新版本的实现形式使您能够以恰当的方式逐渐替换 RIS，同时在组织中逐步部署 Windows Vista。同时也能在以前版本的 Windows 中，通过比 RIS 更简单快捷的方式完成上述工作。

Windows 系统映像管理器
WAIK 的最后一个组件是 Windows 系统映像管理器 (SIM)。如果熟悉以前版本 Windows 中的“安装管理器”，那么您应该对 Windows SIM 的概念有所了解。在该工具的帮助下，您可以针对无人参与安装文件完成一些任务。您可以轻松创建新的无人参与安装文件、编辑现有文件或根据指定的 Windows Vista 映像验证现有文件的设置。该工具还可以针对其中的 Windows Vista 特定 WIM 显示所有可能的配置选项，其中包括传统的无人参与安装选项，这些选项曾在 deploy.cab 所附带的帮助文件中有介绍。最后，Windows SIM 可以帮助创建分发共享和配置集，它们可用于将驱动程序、应用程序和更新通过无人参与安装文件添加到 Windows Vista 安装中。
Windows SIM 要求您必须以系统本地管理员的身份运行。打开 Windows SIM 后，您会看到五个窗格，如图 3 所示。
图 3 Windows 系统映像管理器
图 3 Windows 系统映像管理器
“分发共享”窗格位于左上方，显示了通过 SIM 添加的驱动程序和其他数据包。默认情况下没有装载“分发共享”，但您可以轻松地打开或创建。
“Windows 映像”窗格位于“分发共享”下面，显示了 WIM 中指定 Windows 卷映像的配置选项（组件和数据包）。请注意，每次只能装载 Windows 的单个卷映像（Windows Vista DVD 中的一个 SKU）。
中间的“应答文件”窗格显示了新的或现有 Windows Vista 无人参与安装文件中的配置选项，以及已装载 WIM 卷映像中的目录所定义的默认设置（潜在设置和配置）。
“属性”窗格位于窗口右上方，可用于编辑“应答文件”窗格中组件的各属性。
最后是位于底部的“消息”窗格，显示了更深入的反馈，包括 Windows Vista 无人参与安装文件（始终为 XML 格式）中原始 XML 的视图，以及与当前正在使用的配置集（“配置集”选项卡只在打开配置集的情况下包含数据）相关的有效输出和消息。
如您所见，WAIK 提供了一套非常强大的工具，可帮助您部署 Windows Vista。Windows 部署团队已经完成了一项伟大的工作，创建了一个工具集，可以使 Windows Vista 比以前任何版本的 Windows 都更容易部署。

Wes Miller 是德克萨斯州奥斯汀市 Pluck 公司 (pluck.com) 的一位开发经理。之前，他在 Winternals Software 公司任职，并曾在 Microsoft 担任 Windows 程序经理和产品经理。Wes 对 Microsoft 的 Scott Dickens 和 John Macintyre 给予本专栏的帮助表示感谢。Wes 的联系方式如下：technet@getwired.com。


 现场注意事项: 为姻亲提供技术支持
现场注意事项
为姻亲提供技术支持
James Snell

我结婚了 去年，我在娶到漂亮妻子的同时，就负担起她的整个家庭的技术支持义务，这似乎是一种交换。最近，我接到岳母大人的电话：“你肯定对计算机了如指掌，来帮个忙吧”，这令我不寒而栗。随后我匆匆赶去，她的计算机安装的是 Windows® XP 操作系统，但是我发现其中安装了大量的常见间谍软件、广告软件、工具栏等等。
如果您是一名 IT 专业人士，那您对修复计算机早已司空见惯。但是修复亲戚的计算机却不是那么简单。一般而言，处理受感染的计算机，最快的方法就是格式化硬盘，然后重新安装 Windows 操作系统。不幸的是，绝大多数人不愿意这样做，因为他们不想丢失所有的数据。这通常给您的工作带来许多麻烦。但是如果您甚至不能登录计算机或者无法连接到 Internet，又该如何是好呢？
实际上，您需要做的只是在 512MB 的 USB 钥匙中放入一个工具包，其中包括防病毒软件和反间谍软件和个人防火墙软件。使该工具包保持最新，并存储在方便的地方。
您还应该将 Windows XP Service Pack 2 (SP2) 存储在 USB 驱动器上。虽然当前版本的 Windows XP 都在盒内随附了 SP2，但是我岳母的 XP 版本太旧，并没有随附 SP2。您可以从 microsoft.com/technet/prodtechnol/winxppro/maintain/winxpsp2.mspx 下载并安装 Windows XP SP2。（这时下载的是多机版本的 SP2，您可以通过 Windows Update 安装单机版本。）其大小为 266MB，因此需要花一些时间下载，但是您只需这样做一次即可。
显而易见，您需要耗费整个下午的时间格式化硬盘并安装操作系统，或者辛苦地删除病毒和间谍软件，然后在 Windows 操作系统中安装所需的软件更新和防火墙，并更新病毒定义文件等。现在要做什么？您肯定不希望将每个周末都浪费在这类事情上。可以采用以下几个步骤来扭转当前的不利态势。

删除垃圾软件
我岳母系统上的各种软件主要由她的朋友安装，其中有一些非常有用的软件，也有一些毫无用处的垃圾软件。为了防止此类事件再次发生，我用一个强密码锁定了管理员帐户，并将她设置为标准用户，因为她并不需要经常使用管理员帐户。下次有人试图在她计算机上安装软件时，会被要求以管理员身份登录以继续进行安装，这招一般可以奏效。此外再加上一点用户教育，应该可以有效避免垃圾软件的出现。（Get Safe Online 的网址为 getsafeonline.org，上面有一些很不错的 PC 安全提示。）
而我岳母的安全性要求与密码关系不大。我将用户帐户设置为不使用密码，以鼓励她使用该帐户。此外，我还认为任何有不良企图并且可以直接接触计算机的人更可能是要搬走计算机，而不会是想删除其中的数据。
为此，我在计算机正面的门内贴了一张便条，这可能显得有些愚蠢。但毕竟这是她的计算机，我并不担心她暗中获得管理员密码。虽然这种做法在企业内并不可取，但是我的岳母并没有在计算机内保存任何敏感数据，她并不介意他人使用她的计算机。主要目的是让她拥有轻松的用户体验，而更重要的是让我这个技术支持工程师更加省心！

抵制病毒和间谍软件！
下一步是提供一些额外保护。令人欣慰的是，Windows 系统集成了防火墙，并安装了第三方防火墙。但是，就凭一个防火墙无法担当重任。为了增加安全性，我的岳母现在拥有一个集成了防火墙的 ADSL 路由器。没错，这又是一笔额外的开支，又多了一台需要配置和运行的设备，但是确实可以提高额外保护的安全性。并且设备上还带有闪光灯，够炫吧？
但是不要认为路由器的初始配置就是安全的。我随便挑选了几个配置，在默认情况下，它们在公共端口上启用了 Web 和 telnet 接口。请花些时间检查高级选项。
在网络组件启动之前，软件防火墙无法加载。在启动的早期阶段，内置的 Windows 防火墙是您唯一的保护（这是在将计算机连接到 Internet 之前安装 Windows SP2 的另一个原因）。当禁用 Windows 防火墙时，您的计算机仍然处于该防火墙的保护之下，直到您所选定的防火墙启动为止。此外，有了路由器防火墙，我就不用再担心其会被关闭，因为它是一个独立的设备，如果没有开启，计算机就无法连接到 Internet。同时我认为这与双重密钥保护数据有异曲同工之妙。攻击如要奏效，必须使路由器防火墙和软件防火墙同时失败。尽管这种情况可能发生，但是可能性较低。

要保护数据就别怕麻烦
想象一下吧，要是有一个好的备份，整个恢复过程将会变得多么简单。有人声称他们甚至连最重要的信息都没有备份，我对此不屑一顾。DVD 刻录机和光盘并不十分昂贵，并且 Windows 还随附了备份软件。问题是许多人就是懒的去做。对我的岳母而言，我的解决方案就是按计划对“我的文档”文件夹进行普通备份，并将文件直接保存到“CD 刻录”文件夹 (%userprofile%\Local Settings\Application Data\Microsoft\CD Burning) 中。为了达到上述目的，必须对计划任务进行调整，使其只在用户登录后运行。因此 CD 刻录向导将会定期发出提示（比较烦人），直到插入一张空白光盘为止，这就是我所要达到的效果。

保持联系
通过设置 Windows Live™ Messenger，您可以配置桌面共享。这意味着您回到家之后，如果某些内容需要进行设置，系统就会为您展示所需的操作，无需您再次进行访问（这绝对是一个福音）。顺便说一下，我还认为控制远程计算机（当然需要权限）并监视您的操作，要比路由器上的闪光灯更令人心动！

James Snell 以前是英国的一名 Microsoft 技术支持专家，他一直负责家庭用户和 Microsoft 最大的全球性客户方面的工作。James 目前已经是一位父亲了。您可以发送电子邮件到 James.Snell@lineone.net，与他联系。


 Windows 机密: 摆脱 DLL 梦魇
Windows 机密
摆脱 DLL 梦魇
Raymond Chen

DLL 梦魇。 问题竟严重到如此境地，甚至于自身都背有这么恶劣的绰号。当您安装某个程序时，另一个看似与之无关的程序忽然停止工作。原因出乎您的意料，这两个程序通过一个共享的 DLL 文件产生了某种联系。它们对于系统目录中应该存在哪种 MSVCRT.DLL 文件版本产生了分歧。或者，一个程序可能会升级另一个程序正在使用的 ActiveX® 控件，而后者对于升级后的控件并不完全兼容。
如果这两个程序在您的公司的日常运作中都是必不可少的，则追究哪个才是罪魁祸首就显得无关紧要。当务之急是要让它们启动并运行。比方说，“我们不断赔钱”和“都怪 Bob，他使我们不断赔钱”，这两种情况并无二样，因为不管是哪一种情况，您的公司都在不断赔钱，立即解决问题对我们而言都责无旁贷。
这个比方常常用来形容非要对程序进行取舍的情况。从 Windows® 2000 开始，系统提供了一些修复工具，可以帮助您处理这些冲突。但是，这些修复工具只是临时性的解决方案，当您研究更为永久的冲突解决方案时，这些工具可以让您的系统恢复到正常状态。
Windows 2000 只附带了一种简单的修复工具，现在拥有一个富有创意的名字，即“动态链接库重定向”。要启用 DLL 重定向，请先创建一个与计划进行 DLL 重定向的程序同名的文件，但需在名称后面加上 .local。例如，要对 C:\Program Files\Litware Inc\Invoice.exe 应用重定向，请创建文件 C:\Program Files\Litware Inc\Invoice .exe.local。文件的内容无关紧要，只要该文件存在即可。
一旦为某个程序启用了重定向，则该程序针对加载 DLL 所执行的所有操作，在查找常规位置之前，将首先查找包含该程序的目录。因此，在 MSVCRT.DLL 文件发生冲突的情况下，您可以在每个程序中启用重定向，然后将 MSVCRT.DLL 的私有副本分别放在它们的安装目录下。每个程序就会获得符合自己版本要求的 MSVCRT.DLL，即程序测试所使用的 DLL 版本。
该技术的魅力在于，即使程序加载 DLL 时使用的是完整路径，该方法也同样有效。例如，假设程序试图加载 C:\Program Files\Common Files\Proseware Inc\taxplugin.dll。在升级到 Proseware 2.0 后，您发现其税款插件与您的发票程序不兼容。您能做的就是将旧版税款插件复制到 C:\Program Files\Litware Inc\taxplugin.dll。即使该程序在加载税款插件时使用的是完整路径，DLL 重定向仍然会在当前目录中查找并使用本地替代的 DLL，而不是 Proseware Inc 目录中的 DLL。
在 Windows XP 和 Windows Vista™ 中，DLL 重定向的规则略有不同，但基本原理是相同的。除创建 .local 文件外，还可以创建 .local 目录。在这种情况下，程序搜索的是 .local 目录，而不是其安装目录。该方法可以在同一目录中对多个程序应用重定向，而不会产生任何冲突。
请注意，无法对包含应用程序清单的程序应用重定向，并且一些所谓的已知 DLL 也不应作为重定向的对象。（有关详细信息，请参阅“Dynamic-Link Library Redirection”（英文）。）
DLL 重定向不可能帮您完全摆脱 DLL 梦魇，但是当您解决这些问题时，它至少会为您提供一些应急的处理方法。
图 1

Raymond Chen 正在他的网站上撰写关于 Windows 历史和 Win32 编程的文章，该网站名叫 The Old New Thing（英文），恰巧他的新书也名叫《The Old New Thing》（旧事重提）(Addison-Wesley, 2007)。但这并不意味着“The Old New Thing”就是他的命名习惯。