我已经写了一个控制台程序,“做什么” - 主要是使用boost。如何将其转换为Windows服务? 事先应该了解有关Windows服务的信息?将C++程序转换为Windows服务?
回答
There's a good example on how to set up a minimal service on MSDN一部分配置应用程序作为服务运行。查看有关编写主函数,入口点和示例代码的部分。
一旦建立并运行了Windows服务,您将发现下一个主要问题:调试很痛苦。没有终端(因此没有stdout/stderr),只要您尝试运行可执行文件,它实际上会启动服务,然后返回给您。我发现非常有用
一个窍门是一个-foreground
选项添加到您的应用程序,所以如果你有该标志运行,那么它绕过了服务启动代码和运行,而不是像一个普通的控制台应用程序,这使得它容易很多进行调试。在VS.Net中设置调试选项来调用该标志。
最简单的解决方案可能是在Visual Studio中创建一个新的Windows Service项目,并将您的代码复制到新项目中。
如果你重构你的代码,使您从您可以创建做的工作库,然后调用来自两个控制台项目和服务项目的逻辑分割UI(在这种情况下,控制台)。
而不是剪切和粘贴将您的工作代码( - 用户界面)作为库加载到服务中 – Patrick 2009-10-12 12:07:33
您可以使用SRVANY工具,这是的Windows Server 2003 Resource Kit Tools.
Srvany同时只允许一个服务。所以我写了我的svvany(sFany)让nginx和php-cgi一起作为windows服务运行。这里是源https://github.com/stxh/sFany
有MSDN上here
一个很好的例子就是这么具有自我安装/卸载功能和日志服务的启动和停止事件到Windows事件日志中的锅炉板C++服务项目。它可以像其他服务一样通过服务应用程序(snapin)停止和启动。您最初可能需要给LocalSystem权限才能看到它的工作,因为在XP上,至少它没有足够的权限来开始提供LocalService权限的项目。尽管下载的说明暗示了其他情况,但Visual Studio 2008项目仍然可以使用。
有点晚了,但我希望这可以帮助别人。
- 1. 如何将控制台应用程序转换为Windows服务?
- 2. 将Windows服务转换为Azure WorkerRoles
- 3. 如何将datasnap服务器从vcl应用程序转换为windows服务
- 4. 将C#(Windows应用程序)转换为commadline应用程序?
- 5. 将C++程序转换为程序集
- 6. 将C程序转换为程序集?
- 7. 将.asmx C#Web服务转换为REST
- 8. 将C转换为MPI API C程序
- 9. c#将通用Windows应用程序转换为异步
- 10. 转换为Windows服务错误
- 11. 无法将C程序转换为Ruby
- 12. 将C++转换为模板元程序
- 13. 将C#代码转换为程序集
- 14. 将C#控制台应用程序作为Windows服务运行
- 15. 将控制台应用程序转换为服务?
- 16. 将赢取应用程序转换为赢取服务
- 17. 将WebServiceHost转换为WCF服务应用程序
- 18. 如何将我的VB应用程序转换为ActiveX服务
- 19. 将WCF服务转换为控制台应用程序
- 20. 如何将Python程序转换为Web服务?
- 21. 将WCF服务转换为RESTful应用程序?
- 22. 将Web应用程序转换为Web服务
- 23. appcelerator - 将Windows应用程序转换为移动应用程序
- 24. 将控制台应用程序转换为Windows应用程序
- 25. 将Java应用程序转换为Windows屏幕保护程序
- 26. 将桌面应用程序转换为服务器+浏览器应用程序
- 27. 在Windows服务中转换我的应用程序
- 28. c中的Windows服务应用程序#
- 29. C#Web服务与Windows应用程序
- 30. C中的windows服务程序#
这里有一些有用的调试技巧(特别是使用gflags自动启动调试器):http:// support .microsoft.com/kb/824344 – 2009-10-12 12:50:35
是否将-foreground添加到命令行? – Maciek 2009-10-12 17:41:03
是的,如果你运行没有标志,那么服务就会被安装并运行(这是服务需要工作的方式)。如果使用-foreground选项运行,则绕过服务安装步骤。 – 2009-10-13 08:47:54