簡體   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