警告:从无人参与的非交互式用户帐户自动运行任何 Office 应用程序都有风险而且不稳定。代码或配置中的一个错误就可能会导致出现一个对话框,此对话框可能导致客户端进程停止响应(挂起),这可能会损坏数据,甚至可能会使调用进程崩溃(如果客户端是 ASP,则可能会导致 Web 服务器被关闭)。

警告:Office 没有针对在服务器上实现无人参与的执行进行设计,因此这样做是不安全的。以这种方式使用 Office 的开发人员需要自担风险。

尽管如此,可能仍有必要以这种方式使用 Office。在这种情况下,必须进行特殊的配置以避免 Office 启动时出现错误。本文中的步骤演示了如何配置 Office,使之在开始自动运行时使用交互式用户帐户。

当您使用交互式用户帐户自动运行时,应当注意下列问题:
  • 通常情况下,交互式用户定义为登录到本地控制台的用户(即,实际位于计算机旁的用户)。在使用 Microsoft Windows 2000 终端服务或 Microsoft Windows XP 终端服务的计算机上,交互式用户定义为登录到本地控制台的用户或通过远程终端服务器客户端连接到该计算机的用户。
  • 当 Office 应用程序通过自动化操作启动时,它始终在执行该自动化操作的用户的安全上下文中运行。如果用户是在本地登录到服务器的,该应用程序将在该用户的上下文中运行。如果用户是通过终端服务器会话连接的,该应用程序将在该用户帐户下运行。

    注意:如果您具有多个终端服务器连接,该应用程序将在已登录的各个用户的上下文中运行。
  • 当 Office 应用程序从没有交互权限(如 SYSTEM 帐户)的用户上下文中启动时,则无论是否正在使用终端服务,该用户都必须登录到本地控制台中的服务器上,否则将会出现错误,并且应用程序将不会启动。

    下表显示了当 Office 应用程序配置为以交互式用户身份运行时,您可能会遇到的一些情形:
由于 DCOM 中的更改是全局性的,因此以这种方式配置 Office 会对系统上使用 Office 的其他客户端产生负面影响。进行设置后,其他客户端应用程序可能无法使用 Office 应用程序。在更改 DCOM 配置设置之前,请仔细考虑这对您的服务器的影响。

如果此处列出的问题会严重影响您的设计,或导致其他无法识别的问题,则可能要以不同的方式配置 Office,并仍然允许它从无人参与的进程或服务启动。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
288367  (http://support.microsoft.com/kb/288367/ ) 如何将 Office 应用程序配置为在特定用户帐户下运行
288368  (http://support.microsoft.com/kb/288368/ ) 如何将 Office 应用程序配置为从 COM+/MTS 包自动运行

以交互式用户身份配置 Office

要在交互式用户帐户下设置 Office 自动化服务器,请按照下列步骤操作:
  1. 以管理员身份登录到计算机,并使用完整安装来安装(或重新安装)Office。为了实现系统的可靠性,建议您将 Office CD-ROM 中的内容复制到本地驱动器并从此位置安装 Office。
  2. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。
  3. 运行该应用程序后,请按 Alt+F11 以加载 Microsoft Visual Basic for Applications (VBA) 编辑器。这会强制 VBA 进行初始化。
  4. 关闭应用程序,包括 VBA。
  5. 单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的应用程序。应用程序名称如下所示:
    Microsoft Access 97 - Microsoft Access 数据库
    Microsoft Access 2000/2002 - Microsoft Access 应用程序
    Microsoft Excel 97/2000/2002 - Microsoft Excel 应用程序
    Microsoft Word 97 - Microsoft Word Basic
    Microsoft Word 2000/2002 - Microsoft Word 文档
    单击属性打开此应用程序的属性对话框。

  6. 单击安全选项卡。验证使用默认的访问权限使用默认的启动权限已选中。
  7. 单击标识选项卡,然后选择交互式用户
  8. 单击确定,关闭属性对话框并返回主应用程序列表对话框。
  9. DCOM 配置对话框中,单击默认安全性选项卡。
  10. 单击访问权限的编辑默认值。验证访问权限中是否列出下列用户,如果没有列出,则添加这些用户:
    SYSTEM
    INTERACTIVE
    Everyone
    Administrators
    IUSR_<machinename>*
    IWAM_<machinename>*

    * 这些帐户仅在计算机上安装了 Internet Information Server (IIS) 的情况下才存在。
  11. 确保允许每个用户访问,然后单击确定
  12. 单击启动权限的编辑默认值。验证启动权限中是否列出下列用户,如果没有列出,则添加这些用户:
    SYSTEM
    INTERACTIVE
    Everyone
    Administrators
    IUSR_<machinename>*
    IWAM_<machinename>*

    * 这些帐户仅在计算机上安装有 IIS 的情况下才存在。
  13. 确保允许每个用户访问,然后单击确定
  14. 单击确定关闭 DCOMCNFG。
  15. 启动 REGEDIT,然后验证对于要自动运行的 Office 应用程序,是否存在下列注册表项和字符串值:
    Microsoft Access 2000/2002:
    注册表项:HKEY_CLASSES_ROOT\AppID\MSACCESS.EXE
    AppID:{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}

    Microsoft Access 97:
    注册表项:HKEY_CLASSES_ROOT\AppID\MSACCESS.EXE
    AppID:{8CC49940-3146-11CF-97A1-00AA00424A9F}

    Microsoft Excel 97/2000/2002:
    注册表项:HKEY_CLASSES_ROOT\AppID\EXCEL.EXE
    AppID:{00020812-0000-0000-C000-000000000046}

    Microsoft Word 97/2000/2002:
    注册表项:HKEY_CLASSES_ROOT\AppID\WINWORD.EXE
    AppID:{00020906-0000-0000-C000-000000000046}

    如果这些注册表项不存在,则可以通过在系统中运行以下 .reg 文件来创建它们:
    REGEDIT4
        [HKEY_CLASSES_ROOT\AppID\WINWORD.EXE]
        "AppID"="{00020906-0000-0000-C000-000000000046}"
        [HKEY_CLASSES_ROOT\AppID\EXCEL.EXE]
        "AppID"="{00020812-0000-0000-C000-000000000046}"
        [HKEY_CLASSES_ROOT\AppID\MSACCESS.EXE]
        "AppID"="{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}"
        
    注意:该示例 .reg 文件是针对 Access 2000 或 Access 2002 的。如果您使用的是 Access 97,请将 AppID 项更改为:
    "AppID"="{8CC49940-3146-11CF-97A1-00AA00424A9F}"
  16. 重新启动系统。这是必需的。
posted on 2009-03-19 13:52  雨季  阅读(880)  评论(0编辑  收藏  举报