2010-04-05 87 views
3

我正在編寫一個作爲Windows服務運行的服務器,該服務通過請求調用Firefox來生成網頁的pdf快照。在Windows服務模式下運行GUI應用程序

我知道這是一個壞主意來運行服務模式的GUI程序,但我的程序的服務器從本質在用戶模式下運行它限制。運行用戶級「代理」也不是一種選擇,因爲在運行服務器的機器上可能沒有登錄交互式用戶。

在我的實驗Firefox的成功製作PDF時,該服務在一個已經登錄的用戶帳戶下運行。顯然,在其他情況下它不起作用:用於未登錄的本地系統和用戶帳戶。在啓用「允許服務與桌面交互」選項的LocalSystem下,我可以看到Firefox開始報告無法找到打印機。

因爲它不會是實際的需要爲PDF服務器運行一個打開的用戶會話,有沒有除了從虛擬機中運行整個事情的任何解決方法嗎?

更新:我覺得這個問題並不是真正用於帳戶權限,而是FF在服務模式下運行時等待的隱形模式對話框。

但是,當FF在LocalSystem帳戶下運行時,它仍然無法創建pdf。 FF說它找不到打印機,我想知道這是否可以以某種方式啓用的權限?

回答

7

你可能想嘗試不同的方法,你」 d在您的項目中包含一些.NET PDF庫(PDFsharp是一個很好的開源項目),並將其與您的項目中包含的WebBrowser控件結合使用以呈現PDF。

不要忘記使用STAThread屬性,如果你試試這個。

+1

+1嚴重的是,正如kzen所說的,你真的應該考慮使用一個創建pdf的組件,而不是打開一個GUI應用來完成它。如果這可以由多個用戶調用,那麼你正在乞求麻煩。大多數GUI應用程序不是爲這種情況而構建的,許多人只是爲了遇到爭用問題而走上這條路。 不要爲他們埋單,但Aspose有許多爲這種場景構建的組件,作爲PDFSharp的另一個候選者。 我也總是問「爲什麼PDF」?對於人們來說,這是一個默認的答案,因此他們通常不會問一個更簡單的格式是否可行。 – 2010-04-13 21:06:19

+1

不知道原始海報需要什麼,這種解決方案不適用於「瀏覽器」類的情況。如果項目的要點是概述頁面的外觀,那麼使用PDF生成器並不是一個好的選擇。 – 2010-04-14 08:37:50

+0

你是對的,基督徒。問題是我需要在將結果保存爲PDF之前首先進行可能的閃存和啓用js的頁面的有效渲染。這意味着我應該堅持使用像Gecko或Webkit這樣的現有引擎,或者自己寫。幸運的是,使用'cmdlnprint'附加組件的FF解決了這兩個問題。但將這個捆綁服務作爲服務運行是主要挑戰。 – Leonid 2010-04-16 20:39:17

0

我已經經歷了一個與無人值守的MS Word運行類似的難題。你需要做的就是以你設置用來運行firefox進程的用戶身份登錄,並完成設置打印機的過程。

這可能是剛登錄的用戶也就足夠了 - 還有就是第一次登錄時進行了一些東西。

我很抱歉,我不是很清楚 - 我的意思是,你必須登錄交互使用該帳戶,設置默認打印機,註銷,然後運行服務

+0

是的,實際上這已經爲我工作。正如我在第3段中提到的,GUI應用程序在登錄帳戶下運行得很好。 但我不能靠打開的用戶會話,因爲用戶可能最終決定註銷或只是忘了登錄 – Leonid 2010-04-06 17:47:20

+1

@Leonid:你的服務在它自己的登錄會話,而不是交互式會話中運行,所以它不無論用戶註銷,都無關緊要。 – 2010-04-13 22:26:15

+0

謝謝,本。事實上,上週我發現我的問題並不是無法在非活動帳戶下啓動時無法打印,而是出現在模式對話窗口中,因爲它在服務模式下運行,所以無法看到它。現在,它可以在任何除LocalSystem外的帳戶。它仍抱怨無法找到任何打印機(即使我使用虛擬打印機 - 請參閱我對cmdlnprint FF插件的其他評論)。 – Leonid 2010-04-16 20:43:25

0

一對夫婦一年以前,我有一個相關的問題:共享網絡打印機僞設備上PS-> PCL翻譯和印刷到真正的打印機啓動Ghostscript的。打印後臺處理程序服務作爲本地系統運行,而僞設備驅動程序服務器在服務模式下執行Ghostscript時遇到問題。我能夠通過將HKCU-hive中的幾個註冊表項複製到HKLM來解決問題。

+0

謝謝你,埃德加。這似乎是一個好主意,但我試圖儘可能地侵入用戶的環境。 – Leonid 2010-04-16 20:46:22

0

您可以將程序作爲計劃任務來運行嗎?該任務可以分配給一個給定的用戶帳戶,該帳戶應該可以解決服務限制。

+0

因爲我認爲這個問題並不是真正用於帳戶權限,而是用一個不可見的模式對話框,這不再是一個問題。不過,我相信這也可能起作用。 – Leonid 2010-04-16 20:48:06

相關問題