因此,使用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)