2013-05-09 170 views
1

我創建了一個Windows Service application using c#。我遵循了this msdn文檔中的步驟,但該服務未在Computer -> Manage -> Service pane的服務部分中列出。c中的Windows服務應用程序#

我錯過了什麼嗎?它的Windows 7

想運行我的服務來檢查功能。

謝謝

回答

1

您需要爲Windows服務控制管理器(SCM)安裝服務以瞭解它(憑藉生成的註冊表項)。

你(至少)兩個選項來做到這一點:

sc create "SERVICENAME" binpath = "C:\whatever\Service.exe" 

installutil "C:\whatever\Service.exe" 

對於sc create,任何命令提示符應該做的。對於installutil,Visual Studio命令提示符是運行它的最簡單方式 - 因爲VS命令提示符的環境變量使得使用.NET命令行工具變得容易;根據我的經驗,您的服務需要實現服務(un)安裝程序。

在您安裝並真實地檢查您的服務後,幾乎可以肯定地想要在某個時候卸載它 - 例如然後將其最終版本安裝到非開發位置,或僅清理亂丟已安裝服務列表的開發服務條目。在sc deleteinstallutil /u中有相應的選項 - 與上面有關安裝選項的解釋相同。

我已經寫了more有關卸載&安裝Windows服務,你可能會發現有趣和/或有用的一些細微之處 - 如果你決定走這條路特別是實現服務(UN)安裝程序。

+0

太棒了!這樣做了,現在在服務窗格中列出。當我啓動服務時,它表示服務已啓動,但由於未被任何其他程序或服務使用而停止服務?我如何測試服務工作? – 2013-05-09 06:37:33

+0

@JibranKhan:很高興聽到它。請記住我的答案,如果你願意的話。我會跟進一條評論,指出你正確的方向來測試你的服務。 – J0e3gan 2013-05-09 06:44:29

+0

@JibranKhan:如果您的服務寫入數據庫或文件,測試它的最簡單方法是在數據庫或文件中查找輸出。服務通常本質上並不依賴於用戶界面;但是如果您的服務作爲本地系統(管理工具>服務,然後是服務屬性中的登錄選項卡)運行,以便您可以顯示消息框(即MessageBox.Show),則還可以將服務配置爲與Windows桌面交互。爲了現實檢查。有點乾淨,您還可以將信息事件寫入Windows事件日誌或調試輸出中,您可以使用Sysinternals DebugView(免費)獲取信息事件。 – J0e3gan 2013-05-09 06:54:38

2

您必須安裝該服務。這可以很容易地與installutil完成在.NET框架的文件夾是這樣的:

installutil yourproject.exe 

如果再要調試的服務只是通過「調試」從Visual Studio將其固定 - 「附加到進程」。有關更多詳細信息,請參閱: http://msdn.microsoft.com/en-us/library/sd8zc8ha.aspx

+1

試過但沒有成功,仍然沒有在服務部分列出的服務。 – 2013-05-09 06:15:40

+0

@JibranKhan:您的服務可能不會像「System.Configuration.Install.Installer」一樣實現服務(un)安裝程序。請參閱[我的相關答案](http://stackoverflow.com/a/16293612/1810429)或[代碼項目文章](http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows -Service-in-C)鏈接其中以獲取更多信息;或者只是使用'sc create',正如我在回答這個問題時所描述的那樣。 – J0e3gan 2013-05-09 06:34:18