因此,使用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的情况下创建ClickOnce吗?
- 3. 在没有Web服务器的情况下构建Web服务
- 4. 在没有Visual Studio的情况下使用团队服务在线存储库
- 5. 在没有开发者账户的情况下在Visual Studio中创建IPA
- 6. 在没有Masterpage的情况下创建Visual Studio 2010 ASP.NET应用程序
- 7. 使用Visual Web Studio 2010在没有ASPX的情况下创建平原HTML>
- 8. 没有Visual Studio干扰的Windows服务
- 9. 在没有Installshield的情况下部署Windows服务
- 10. 在没有EXE的情况下删除Windows服务
- 11. 在没有Visual Studio模板的情况下在C++中开发一个Windows服务?
- 12. 在没有Visual Studio的情况下在C#中嵌入资源
- 13. 在没有Visual Studio的情况下编译Microsoft的LoginAdmin.dll代码
- 14. 在没有服务引用的情况下调用WCF服务
- 15. 在没有Visual Studio的情况下使用Microsoft.VisualStudio.TestTools.UnitTesting?
- 16. 在没有Visual Studio的情况下使用Razor? System.Web.WebPages.Html.HtmlHelper与System.Web.Mvc.HtmlHelper
- 17. 如何在没有visual studio的情况下编译C文件
- 18. 在没有Visual Studio 2010的情况下安装MSBuild 4.0
- 19. 在没有Visual Studio的情况下调试asp.net
- 20. 在没有Visual Studio的情况下将Web部署到IIS
- 21. 在没有Visual Studio的情况下为ASP.NET-MVC开发
- 22. 在没有Visual Studio的情况下编译ODE(用于PyODE)
- 23. 如何在没有Visual Studio的情况下恢复nuget包?
- 24. 如何在没有Visual Studio的情况下进行调试?
- 25. 在没有Visual Studio的情况下调试Windows边栏小工具
- 26. 在没有OperationContext的情况下创建可测试的WCF服务
- 27. 在没有安装Visual Studio的情况下在TeamCity构建服务器上运行MSTests
- 28. 在没有Visual Studio的情况下在vs2008中重建解决方案?
- 29. 如何在没有服务器的情况下创建P2P网络?
- 30. 如何在没有runOnUiThread()的情况下创建/运行AsyncTask服务()