当经典ASP使用时,如何终止WINWORD.EXE?

时间:2009-06-10 12:11:24

标签: asp-classic iis-6 ms-office office-2007

我有一个 的用户使用Microsoft Word 2007在他的ASP Web应用程序中创建和操作word文档。我很清楚'Considerations for server-side Automation of Office'知识库文章和许多第三方组件可以做这种事情,但他们已经走了这条道路。

他遇到的问题是WINWORD.EXE进程永远不会终止,即使他在应用程序对象上调用Quit

例如:

Set objWord = Server.CreateObject("Word.Application")
'' Do work
objWord.Quit
Set objWord = Nothing

正如您所料,他的服务器最终散落着孤儿WINWORD.EXE 需要手动干预才能终止的流程。

有没有办法在脚本中明确终止这些WINWORD.EXE进程?

更新

我已经取得了一些进展,我想我已经掌握了问题所在。当Office应用程序首次在新的Windows帐户下运行时,它会询问您的姓名和姓名缩写。现在因为没有可见的GUI,所以没有人可以按下所有正确的按钮。我尝试使用WINWORD.EXE启动RUNAS作为网站匿名帐户身份,但是有一些权限问题阻止Word或Office执行其想要执行的其他类型的初始设置例程。

2 个答案:

答案 0 :(得分:2)

我能想到两件事:

MyWorkBook .Saved尚未设置为true。因此,Quit调用导致WinWord显示“您是否希望保存”对话框。在服务器上。在没有桌面的会话下。毋庸置疑,Word永远不会在等待用户时退出。

您的用户脚本并不总是进入退出行。这是使用Office Automation的常见原因,也许是最大的原因,因为您确实需要多层异常处理和最终语句(这不是VBScript或ASP经典引擎的强点),以确保正确清理实例。

答案 1 :(得分:0)

现在这个问题不再适用了。几乎所有问题都与WINWORD.EXE需要提升权限(高于我们允许的网站匿名用户帐户)才能执行某些任务有关。

客户明智地决定使用ASPOSE.Words for .NET,它也有一个COM可调用包装器,所以经典的ASP代码也可以使用它。