繁体   English   中英

打印作为Windows服务运行的脚本/应用程序

[英]Printing form a script/application which is running as Windows service

我有一个(至少对我来说)奇怪的问题。 我创建了一个(Java)应用程序,该应用程序(在满足某些条件时)运行一个使用MS-Word打印某些文档的PowerShell脚本。 我通过一个简单的批处理文件(java调用)运行此应用程序。

当我通过批处理运行该应用程序时,它的工作原理就像一种魅力; 但是,当我(使用NSSM或AlwaysUp)将其转换为Windows服务并触发失败的打印过程时,它却起作用。 我在任务管理器中看到启动了MS-Word进程,它占用了大量CPU,但是却无济于事(无论我等待了多长时间)。

简化代码:

$objOffice = New-Object -comobject Excel.Application
$objDoc = $objOffice.Workbooks.Open("C:\printTest\printFile.xlsx")
$objDoc.printout()
$objDoc.Close($false)
$objOffice.quit()

我也在其他计算机上对此进行了测试...结果相同。

也很有趣:编辑:这部分内容写在哪里是我的错,并将其修复。

在这一点上,我什至不能确定它与powershell命令有关,但是我已经摆脱了想法。

Start-Process -FilePath 'C:\printTest\printFile.xlsx' -Verb print

另外,请看此页面 ,其中显示

您可能会注意到我们前面提到的“允许服务与桌面交互”选项–默认情况下,除非选中此复选框,否则不允许服务访问您的桌面,并且该复选框实际上仅用于旧版支持。

但是,仅选中该复选框并不会立即为他们提供访问权限-您还需要确保注册表中的NoInteractiveServices值设置为0,因为如果将其设置为1,则该复选框将被忽略并且服务无法进行交互完全没有桌面。 注意:在Windows 8中,该值设置为1,并且禁止交互式服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM