ColdFusion';作为服务运行';Vs';在控制台中运行';

ColdFusion';作为服务运行';Vs';在控制台中运行';,coldfusion,vbscript,ms-word,console-application,windows-server-2008-r2,Coldfusion,Vbscript,Ms Word,Console Application,Windows Server 2008 R2,问题 当CF作为服务运行与CF在控制台模式下运行时,在权限方面有什么不同 历史 我有一个为Word.Application创建COM对象的代码,并使用它们将文档转换为PDF。但当我转到CF 10u8(64b)时,逻辑中断了。我已经检查了inter-webs,尝试更改java.library.path={}值、权限和所有可能的提示以使其工作;但是没有成功。我发现要确认jintegra\bin\ntvinv.dll是设计用于32b环境的 因此,我求助于使用VB脚本模式将CF代码转换为VB脚本,并进行

问题

当CF作为服务运行与CF在控制台模式下运行时,在权限方面有什么不同

历史

我有一个为Word.Application创建COM对象的代码,并使用它们将文档转换为PDF。但当我转到CF 10u8(64b)时,逻辑中断了。我已经检查了inter-webs,尝试更改java.library.path={}值、权限和所有可能的提示以使其工作;但是没有成功。我发现要确认jintegra\bin\ntvinv.dll是设计用于32b环境的

因此,我求助于使用VB脚本模式将CF代码转换为VB脚本,并进行文档到PDF的转换

问题

VB脚本中的代码非常漂亮,它可以立即满足我的需要。在我把这个叫做.vbs之前,它看起来还不错。它永远处理,超时,什么也不显示+任务管理器中有放弃的WINWORD.exe进程

我尝试将参数写入批处理文件并调用它。这次它立即运行,但什么也没发生。我检查了日志,上面写着

Microsoft VBScript运行时错误:需要对象:“wdocs.Open(…)

我从命令提示符调用了批处理文件,它执行时没有错误。我的文档->PDF转换完成

因此,这次我将ColdFusion服务的“登录身份…”权限从“本地系统帐户”更改为系统的管理员用户帐户,并启动了它。我知道

本地计算机上的CF 10应用程序服务器服务已启动,然后停止。如果某些服务未被其他服务或程序使用,则会自动停止

所以,路的尽头就在那里。我尝试过使用“允许服务与桌面交互”选项。但一切都没有改善

最后,我尝试从bin\cfstart.bat文件运行CF。它有coldfusion.exe-start-console。命令窗口出现,CF启动。 这一次,作品和转换发生了。没有发现任何错误。我不明白为什么会这样。使用系统帐户(登录者)作为服务运行与使用相同用户帐户作为控制台运行有什么区别?我缺少什么来理解

调试

我已经在服务器上创建了一个本地用户帐户,并在“以…身份登录”和使用同一帐户登录系统中使用该帐户。在这两种情况下,情况与上述相同

我觉得这是一个许可问题,我不知道在哪里,为什么会发生这种情况?特别是为什么在服务模式下而不是控制台模式下


注意:在转到VBS之前,我已尝试使用,但由于文档中的某些特定格式,它会引发异常。因此,目前这不是一个选择

信用证:我的VBScript代码源于

更新

这是我的代码,你可以用它来测试

命令行代码

/c/doc2pdf.vbs)
  • 参考文献10。我在更新8。这适用于任何更新级别

  • 我认为您的问题与windows ap与控制台应用程序有关。 可能是某些部分要求控制台(windows桌面gui)处于活动状态。 有些服务,例如DHCP,在那里没有依赖关系,因此作为一个纯服务运行良好,不需要人工交互


    也许只是从系统内部尝试流程监视器的一个想法,它有时会显示什么是允许的,什么是不允许的。

    也可能会出现一些对话框。你可能看不到这些。您可以通过将Application.DisplayAlerts设置为false来尝试禁用这些


    参见

    我已经找到了问题的答案

    我试图回到基本面,检查所有相关组件的问题

  • 碳纤维
  • VB脚本代码
  • Word应用程序COM
  • Windows 2008 R2
  • 如果没有涉及到Word COM,CF只是很好地执行脚本。所以,我觉得,这基本上与访问无关

    VB脚本代码在从命令窗口执行时很好,但在从服务(CF服务)调用时则不行。所以,我排除了VB脚本太麻烦

    Word应用程序COM-与VB脚本相同

    Windows 2008 R2-罪犯被捕

    原因

    这是由于Windows 2008服务器中的错误造成的。它与用户配置文件有关。即使当我说“以我的服务登录”时,创建的COM始终使用本地系统帐户。我在程序中找到了这个

    从这一点开始,我查看了2008年MS论坛以及与COM对象相关的问题

    有很多文章,但其中一篇显然与我的文章有相同的问题,但是Excel

    答案是“对于办公自动化(通过脚本和非基于窗口的操作进行访问),需要在系统配置文件中有一个名为“Desktop”的文件夹。”

    它很详细。(搜索“H Ogawa”)

    再一次,努力工作和高谈阔论是有好处的


    谢谢大家的帮助。

    It永远处理,超时,什么也不显示+任务管理器中有放弃的WINWORD.exe进程请尝试将其附加到参数的开头。指示cmd.exe运行命令并退出。(另外,CF10可能不需要它,但将stderr重定向到stdout也不会有什么坏处,即
    2>&1
    )<代码>另外,你能发布一个小的、独立的、可以测试的复制案例吗?@Leigh我已经添加了我的代码。此外,我还尝试了/c和2>&1建议。它确实有助于杀死这个“赢家”。只是想一想,我觉得有了cfexecute的新属性(errorFile),使用2>&1不会有很大帮助。是的,就像我提到的,重定向stderr可能没有必要,但作为一个故障排除步骤不会有什么坏处。真正的代码对所有文件都使用绝对路径吗?
    <cfexecute name="c:\windows\system32\cmd.exe" arguments="#commands#" outputFile="output.txt" errorFile="error.txt" timeout="20"/>
    
    <cfscript>
        objJR  = createObject("java", "java.lang.Runtime").getRuntime();
        result = objJR.exec(commands);
        writeDump(result);
    </cfscript>