非 Microsoft 应用程序和迁移

 

上一次修改主题: 2007-12-20

发布日期:2005 年 3 月 2 日

作者:Ed Beck

从 Microsoft Exchange Server 或 Microsoft Windows 的较早版本迁移时,一些非 Microsoft 应用程序可能不能运行或不能正常运行。以下原因之一导致此问题频繁出现:

  • 应用程序是基于 Microsoft Windows NT Server 的协作数据对象 (CDONTS) 构建的。
  • 安全限制阻止应用程序访问所需的资源。

本文将就这两种情况进行讨论。

本文不包含帮助您迁移非 Microsoft 应用程序的代码示例。但是,本页后面的“有关详细信息”部分中提供了指向包含该信息的 Microsoft 知识库文章的链接。而且,虽然本文不会具体说明如何修改安全设置,但会提供有关安全设置的详细信息的链接。

近日,我对六个月来涉及对 Exchange Server 开发应用程序的客户的重点支持案例进行了回顾。其中 10% 的案例涉及使用非 Microsoft 应用程序出现问题的客户,这些客户在从较早版本的 Windows 或 Exchange Server 升级后,非 Microsoft 应用程序便不能运行。在其中 30% 的案例中,应用程序因使用了 CDONTS 或因安全更新阻止应用程序访问所需的资源而不能运行或不能正常运行。

Windows NT 中包含 CDONTS。CDONTS 将 SMTP 用作电子邮件接口,而且通常与 Active Server Pages (ASP) 脚本一起使用。该脚本在运行 Microsoft Internet 信息服务 (IIS) 的服务器上运行,可发送简单的电子邮件。虽然 CDONTS 不是特别稳定,但它轻巧易用。它的成功很大程度上要归功于这些特点。

之后发布的 Windows 2000 Server 包含 Windows 2000 的协作数据对象 (CDOSYS) 和 CDONTS。CDOSYS 为开发人员提供了更为稳定的 API,但不要求开发人员创建需要在运行 Exchange Server 的计算机上运行的应用程序。Windows 2000 Server 包含 CDONTS 以实现向后兼容。

Microsoft Windows Server 2003 引入了托管代码以及用于 CDOSYS 的托管包装。该托管包装称为 System.Web.Mail。

Windows Server 2003 不包含 CDONTS,因此全新安装的 Windows Server 2003 不包含 CDONTS。但是,从 Windows 2000 Server 升级到 Windows Server 2003 后,不会删除 CDONTS。因此,如果服务器从 Windows 2000 Server 升级到 Windows Server 2003,则 CDONTS 应用程序可以在该服务器上运行,但如果服务器上运行的是全新安装的 Windows Server 2003,则 CDONTS 应用程序无法在该服务器上运行。

随着越来越多的人从 Windows NT 4.0 升级到 Windows Server 2003,该问题出现得更加频繁。如果 Web 承载公司安装了运行全新安装的 Windows Server 2003 的新服务器,然后将其客户端的 Web 页移到该新服务器上,客户便会遇到此问题。常常,一些迁移的页面会使用 CDONTS。要保持支持配置的最好方法是将运行 Windows 2000 Server 的服务器升级到 Windows Server 2003。

我们强烈建议开发者将现有的 CDONTS 应用程序转换为 CDOSYS,最好能转换为 System.Web.Mail。在本文后面的“有关详细信息”部分,我添加了指向一些有用的知识库文章的链接。

在进行某些类型的升级后,非 Microsoft 应用程序也可能无法运行或无法正常运行,原因是新的安全限制阻止应用程序访问所需的资源。这些升级包括安装了新版本的 Windows、Exchange Server 或 Microsoft Office,或者安装了 Service Pack。

在这些情况下,非 Microsoft 应用程序的开发人员并未故意执行导致安全更新关闭应用程序的操作。实际情况是,在 Microsoft 对源代码进行不断检查的过程中,我们发现了一些潜在的安全问题并在升级和 Service Pack 中予以解决。这些升级和 Service Pack 有时会关闭非 Microsoft 应用程序依赖的路径。我要强调的是软件开发人员并未呆在办公室里尝试找到和利用我们软件中的缺陷。应用程序之所以不能运行或不能正常运行,是因为应用程序在软件升级关闭了特定路径后无法访问所需的资源。

来看一个示例。在 Exchange 2000 Server Service Pack 3 (SP3) 发布之前,Everyone 组对 IIS 元数据库有读取权限。发送 SMTP 邮件的常用方法是请求应用程序在 IIS 元数据库中查找默认 SMTP 服务器的名称。由于 Everyone 组对 IIS 元数据库有读取权限,因此该方法很有效。但是,Exchange 2000 Server SP3 取消了 Everyone 组对 IIS 元数据库的读取权限,导致使用先前权限的应用程序不能运行。

Microsoft 已在知识库文章中解决了这个问题。两种解决方法具有相同的关注点,即确保在对 IIS 元数据库有适当访问权限的帐户下运行应用程序。在当今环境中,针对应用程序体系结构设计适当的权限是非常重要的。应用程序必须有访问所需资源的足够权限(但无需更多权限)。

不应在管理员帐户下运行所有应用程序或允许匿名访问所有资源。应确定应用程序所需的资源并配置应用程序,使其在拥有相应权限的帐户下运行。

如今,与安全配置相关的支持调用所产生的最大问题是与使用 sendusingpickup 方法时对拾取目录权限相关的问题。有关如何为 sendusingpickup 方法正确配置权限的详细信息,请参阅以下 Microsoft 知识库文章:

 
显示: