2017-01-19 183 views
0

我有點(至少對我來說)奇怪的問題。我創建了一個(Java)應用程序(當滿足一些條件時)運行使用MS-Word打印某些文檔的PowerShell腳本。我通過一個簡單的批處理文件(java調用)來運行這個應用程序。打印作爲Windows服務運行的腳本/應用程序

當我通過我的批處理運行應用程序時,它的工作原理如下(但是當我(使用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命令有關,但我正在擺脫想法。

+0

也許它與執行腳本的用戶帳戶有關? – Berger

+2

你可以在這裏添加代碼嗎?如果時間太長,你可以創建一個[mcve]在這裏發佈?現在,我們只能在黑暗中拍攝。 – geisterfurz007

+0

@Berger:試用了管理員帳號。同樣的問題依舊。 – stackmonkey

回答

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

而且,看看this page,它說

您可能注意到了「允許服務與桌面交互」的選項,這是我們前面所提到的 - 默認情況下,服務不 允許訪問您的桌面,除非選中此框,而此 複選框實際上僅用於遺留支持。

但只檢查 那盒子不會立即給他們訪問 - 你還需要 確保在註冊表中NoInteractiveServices值設置 爲0,因爲當它被設置爲1,即複選框被忽略,並且服務根本無法與桌面交互。注意:在Windows 8中, 的值設置爲1,並禁止交互式服務。

+0

我也試過這個命令...至於允許服務與桌面交互......它可以在整個腳本中運行,但沒有任何反應。 – stackmonkey

相關問題