2012-05-02 50 views
5

我有一個簡單的Windows服務項目。我遵循的指示位於http://msdn.microsoft.com/en-us/library/zt39148a.aspx,包括添加自定義操作。Windows服務在任務計劃程序 - 服務無法啓動。服務進程無法連接到服務控制器

當在安裝項目的發佈模式下運行我的版本。我將.msi運行到服務器上,我希望服務能夠運行。當我打開服務管理器時,顯示該服務。我甚至可以手動啓動服務,並按照我的需要運行。

但是,我希望此服務每5分鐘運行一次,因此我在Task Scheduler中設置了一個任務,並將Windows服務的.exe指向該任務。但是,當任務計劃程序運行我的Windows服務時,出現以下錯誤:

服務無法啓動。服務進程無法連接到服務控制器

我已經做了大量的研究,但沒有提出任何問題。有沒有人有任何想法可能會導致這種情況?

+0

你究竟把什麼放在任務計劃程序來啓動你的服務? – CoreTech

+0

在「常規」選項卡中,單擊「運行用戶是否已登錄」,然後選中「不存儲密碼」框。 在觸發標籤我將它設置爲每5分鐘 在操作選項卡上運行,我開始選擇的程序,並且把它直接指向我的.exe文件 – vcuankit

+0

既然你已經完成,並開始爲您服務,止跌」你最好在你的服務中使用Timer而不是TaskScheduler嗎?你甚至可以設置一個註冊表值,你可以讀取並使用它作爲可以動態更改的時間間隔。如果您想要任何日誌,可以將其添加到事件查看器。 –

回答

2

好的,那是行不通的。你不能像任務計劃程序那樣直接運行你的服務的exe文件。你應該use the "Net start" command開始服務。

務必在計劃任務中檢查「以最高權限運行」框,以避免UAC(如果您使用的是Windows Vista或更高版本)。

+0

感謝您對CoreTech的迴應。你能詳細說一下嗎?我應該在哪裏將NET START命令放入任務計劃程序中?或者我應該簡單地開始服務,如果我剛開始服務,那麼我應該在「操作」選項卡中放置什麼? – vcuankit

+0

在「操作」選項卡上,向「啓動程序」添加新操作,並在「程序/腳本」字段中輸入「net start [your-service-name]」。 – CoreTech

+0

當我這樣做時,它會給我一個警告,詢問我是否使用參數。我點擊NO並嘗試運行它。最後運行結果顯示「系統找不到指定的文件」。 – vcuankit

1

我的回答沒有在評論中正確設置,所以我想讓大家知道他們遇到了這個問題。基本上,我剛剛創建了一個.bat文件,然後將該.bat文件中,我把下面兩行:

NET START服務名
NET STOP服務名

net stop命令是同步的,將等待該服務在停止服務之前完成。

感謝您的幫助!

+0

Windows服務通常設計爲始終運行。如果您想每5分鐘運行一次,請編寫一個普通的舊控制檯應用程序,並使用任務計劃程序每5分鐘運行一次,或者編寫一個始終運行並使用計時器或睡眠語句每5分鐘喚醒一次的服務。每5分鐘啓動一次服務來執行特定的任務,然後再次停止它並不是一個好設計 – Andy