技术开发 频道

服务器端自动化Office 相关问题解决方案

2.      主要解决方案

如果决定继续在服务器端进行“Office 自动化”,我们需要解决前面列出的许多问题才能在这种环境中成功运行。由于大多数问题都是与配置相关的,所以无法给出一套让“Office 自动化”在所有系统的所有情况下都能在服务器端正常运行的步骤。有些配置设置可能会与其他选项冲突,每种方法都各有利弊。这可能需要不断试验,才会找到最适用于自己环境的方案。

在程序准备就绪可以部署之后,一定要在服务器上正确配置 Office,以便运行合适的用户上下文。Office 需要用户配置文件,并且必须确保它在加载时有一个配置文件才能成功实现自动化。在服务器端环境中工作时,主要使用如下两种方法:

将“自动化”启动的 Office 应用程序所有实例都配置以“交互式”用户的身份运行。

将“自动化”启动的 Office 应用程的所有实例都配置为以某个特定用户的身份运行。

 

Office 应用程序配置为在交互式用户帐户下运行

 

这种方法可以使 Office 同时获得特定桌面的身份和可交互性,它是调试时的非常好的选择。为了成功运行,这种方法确实会要求交互式用户保持登录状态,所以,它可能不适用于某些情况。

在交互式用户帐户下设置 Office 自动化服务器:

1. 以管理员身份登录到计算机,并使用完整安装来安装Office

2. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。

3. 运行该应用程序后,请按 Alt+F11 以加载 Microsoft Visual Basic for Applications (VBA) 编辑器。这会强制 VBA 进行初始化。

4. 关闭应用程序,包括 VBA

5. 单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的Office应用程序。单击属性打开此应用程序的属性对话框。

6. 单击安全选项卡。验证使用默认的访问权限和使用默认的启动权限已选中。

7. 单击标识选项卡,然后选择交互式用户。

8. 单击确定,关闭属性对话框并返回主应用程序列表对话框。

9. DCOM 配置对话框中,单击默认安全性选项卡。

10. 单击访问权限的编辑默认值。验证访问权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM

INTERACTIVE

Everyone

Administrators

IUSR_<machinename>

IWAM_<machinename>

 

11. 确保允许每个用户访问,然后单击确定。

12. 单击启动权限的编辑默认值。验证启动权限中是否列出下列用户,如果没有列出,则添加第10中的那些用户:

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}

 

如果这些注册表项不存在,则可以在系统中创建它们。

 

16. 重新启动系统。这是必需的。

Office 应用程序配置为在特定用户帐户下运行

这种方法会指定一个特定用户,但不允许交互性。Office 会在一个不可见的桌面上的新 WinStation 中以被指定用户的身份启动。这种方法需要进行一些其他配置,以确保加载用户注册表配置单元,因为在默认情况下 COM/DCOM 不会做这一步。该设置对于系统来说是全局性的,所以它可能会与其他程序冲突

要在特定用户帐户下设置 Office 自动化服务器:

1. 以管理员身份登录到计算机,然后创建一个可自动运行 Office 的新用户帐户。在本例中,此帐户命名为 OfficeAutomationUser。创建此用户帐户的密码,并选择“永不过期”以便不必更改密码。

2. OfficeAutomationUser 帐户添加到“管理员”组。

3. OfficeAutomationUser 身份登录到计算机,并使用完整安装来安装Office4. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。

5. 运行该应用程序后,请按 Alt+F11 以加载 Microsoft Visual Basic for Applications (VBA) 编辑器。这会强制 VBA 进行初始化。

6. 关闭应用程序,包括 VBA

7. 单击“开始”,单击“运行”,然后键入 DCOMCNFG。选择要自动运行的应用程序。单击“属性”打开此应用程序的属性对话框。

8. 单击“安全”选项卡。验证“使用默认的访问权限”和“使用默认的启动权限”已选中。

9. 单击“标识”选项卡。选择“下列用户”,并键入 OfficeAutomationUser 的用户名和密码。

10. 单击“确定”,关闭属性对话框并返回主应用程序列表对话框。

11. 在“DCOM 配置”对话框中,单击“默认安全性”选项卡。

12. 单击访问权限的“编辑默认值”。验证访问权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM

INTERACTIVE

Everyone

Administrators

OfficeAutomationUser

IUSR_<machinename>

IWAM_<machinename>

 

13. 确保允许每个用户访问,然后单击“确定”。

14. 单击启动权限的“编辑默认值”。验证启动权限中是否列出下列用户,如果没有列出,则添加第12中的用户:

15. 确保允许每个用户访问,然后单击“确定”。

16. 单击“确定”关闭 DCOMCNFG

17. 启动 REGEDIT,然后验证对于要自动运行的 Office 应用程序,是否存在下列注册表项和字符串值:

Microsoft Access 2000/2002/2003

注册表项: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/2003

注册表项:HKEY_CLASSES_ROOT\AppID\EXCEL.EXE

AppID{00020812-0000-0000-C000-000000000046}

 

Microsoft Word 97/2000/2002/2003

注册表项:HKEY_CLASSES_ROOT\AppID\WINWORD.EXE

AppID{00020906-0000-0000-C000-000000000046}

如果这些注册表项不存在,则可以在系统中创建它们

 

18. 要避免注册表冲突,请安装并运行 NT 服务。设置服务的标识以作为 OfficeAutomationUser 运行,并选择“自动”作为启动类型。

19. 重新启动系统。

3.       小结

本文主要对自动化Office应用的方案中所经常遇到的问题,提供了一些通常可以尝试解决的方法。我们需要评估上述哪种方法适合自身的需要,以及如何才能最好地部署解决方案。此处提供的信息不保证能够解决所有客户端的所有问题。建议最好在部署之前彻底地进行测试。

同时,除了此处列出的问题或消息之外,还可能出现一些其他问题和消息,但它们通常作为前面列出的五个问题的结果出现。为了解决这几种错误,开发人员应该将 Office 的操作环境配置为模拟客户端状态,或者从任何服务器端代码中删除 Office 应用程序并改为使用更稳定的组件(或客户端“自动化”)。

0
相关文章