因此,使用Visual Studio創建Windows服務相當簡單。我的問題要深入一些,以確定如何將可執行文件作爲服務來安裝&如何將服務編寫爲直通式C應用程序。我找不到很多這方面的參考,但我假設必須有一些我可以實現的接口,以便我的.exe可以作爲服務安裝。在沒有Visual Studio的情況下創建Windows服務
7
A
回答
1
2
基本上有一些註冊表設置,你必須設置以及一些接口來實現。
看看這個:http://msdn.microsoft.com/en-us/library/ms685141.aspx
您感興趣的SCM(服務控制管理器)。
3
將可執行文件設置爲服務是其中的一部分,但實際上它通常由您正在使用的任何安裝軟件來處理。您可以在測試時使用命令行SC工具(或者如果您不需要安裝程序)。
重要的是,您的程序必須在啓動時調用StartServiceCtrlDispatcher()。這將您的服務連接到服務控制管理器並設置一個ServiceMain例程,該例程是您的服務主入口點。
ServiceMain(你可以稱之爲實際上任何你喜歡的東西,但它似乎總是ServiceMain)然後應該調用RegisterServiceCtrlHandlerEx()來定義一個回調例程,以便操作系統可以在發生某些事件時通知你的服務。
下面是一些片段從服務我幾年前寫的:
設置爲服務:
SERVICE_TABLE_ENTRY ServiceStartTable[] =
{
{ "ServiceName", ServiceMain },
{ 0, 0 }
};
if (!StartServiceCtrlDispatcher(ServiceStartTable))
{
DWORD err = GetLastError();
if (err == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)
return false;
}
的ServiceMain:
void WINAPI ServiceMain(DWORD, LPTSTR*)
{
hServiceStatus = RegisterServiceCtrlHandlerEx("ServiceName", ServiceHandlerProc, 0);
服務處理器:
DWORD WINAPI ServiceHandlerProc(DWORD ControlCode, DWORD, void*, void*)
{
switch (ControlCode)
{
case SERVICE_CONTROL_INTERROGATE :
// update OS about our status
case SERVICE_CONTROL_STOP :
// shut down service
}
return 0;
}
1
我知道我晚了一點,但我最近也有同樣的問題,不得不通過互聯網尋找答案。
我在MSDN中設法找到這篇文章,它確實奠定了基礎。我最終將許多文件合併到一個包含我需要的所有命令的exe文件中,並添加到我自己的「void run()」方法中,該方法根據自己的需要循環使用服務的整個生命週期。
這將是一個很好的開始給別人使用的正是這種問題,所以對於未來的搜索者那裏,檢查出來:
完整的服務樣品 http://msdn.microsoft.com/en-us/library/bb540476(VS.85).aspx
相關問題
- 1. 在沒有Visual Studio的情況下構建RIA服務項目
- 2. 如何在沒有Visual Studio的情況下在Windows 7上安裝服務?
- 3. 我可以在沒有Visual Studio的情況下創建ClickOnce嗎?
- 4. Visual Studio | Windows Phone在沒有睡眠的情況下等待
- 5. 如何在沒有活動/服務的情況下創建BroadcastReceiver?
- 6. 在沒有Web服務器的情況下構建Web服務
- 7. 在沒有Visual Studio的情況下使用團隊服務在線存儲庫
- 8. 在沒有開發者賬戶的情況下在Visual Studio中創建IPA
- 9. 沒有Visual Studio干擾的Windows服務
- 10. 在沒有安裝Visual Studio的情況下,以編程方式創建csproj
- 11. 在沒有Masterpage的情況下創建Visual Studio 2010 ASP.NET應用程序
- 12. 使用Visual Web Studio 2010在沒有ASPX的情況下創建平原HTML>
- 13. 在沒有Installshield的情況下部署Windows服務
- 14. 在沒有EXE的情況下刪除Windows服務
- 15. 在搭建服務器的情況下構建ASP.NET 4.5,而不使用Visual Studio
- 16. 在沒有Visual Studio模板的情況下在C++中開發一個Windows服務?
- 17. 在沒有Visual Studio的情況下在C#中嵌入資源
- 18. 在沒有Visual Studio的情況下編譯Microsoft的LoginAdmin.dll代碼
- 19. 在沒有安裝Visual Studio的情況下編譯Visual Studio項目?
- 20. 在沒有Visual Studio的情況下使用MFC和ATL庫
- 21. 在沒有Visual Studio的情況下調試asp.net
- 22. 如何在沒有Visual Studio的情況下開發Microsoft Office AddIn
- 23. 如何在沒有Visual Studio的情況下恢復nuget包?
- 24. 如何在沒有Visual Studio的情況下安裝Nuget包?
- 25. 在沒有dbDacFx的情況下部署Visual Studio
- 26. 如何在沒有Visual Studio的情況下進行調試?
- 27. 在沒有Visual Studio的情況下運行SpecFlow測試
- 28. 在沒有Visual Studio的情況下使用Microsoft.VisualStudio.TestTools.UnitTesting?
- 29. 如何在沒有visual studio的情況下編譯C文件
- 30. 在沒有Visual Studio的情況下編譯ODE(用於PyODE)