如果我双击它或者从VS2010调试程序,程序会正确启动,但是当我尝试从Services.msc
运行它时它没有响应。它曾经工作得很好,但我试图取消注册然后重新注册服务以修复不同的错误,现在我收到以下错误:
Could not start the PFAdapterMng service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion.
我尝试将日志放在main()
的开头,我发现该服务在它到达之前就停止响应。
我尝试使用 Procmon 来确定是否缺少某些注册表项,但我无法通过Procmon找到任何问题。
我还尝试重新注册服务以尝试修复它,因为重新注册服务是导致错误的原因。它似乎也无法解决任何问题。
我已使用参数-UnregServer
和-Service
逐步完成该程序,以确保该程序已取消注册并成功注册,并且看起来它正在正确注册为服务。
这是因为注册表中的某些错误吗?我看不出我的程序在进入main()
之前如何或为何停止响应。
我还可以尝试做些什么来调试此问题?
更新:
所以,我尝试在运行它之后尝试取消注册该服务,它似乎工作正常。我查看services.msc
,我仍然看到该应用程序是一项服务。在过去,在我得到错误1053之前,它会在第一次消失之后消失。我试着再次注册它,我收到了一个消息框:
无法删除服务
所以我决定在Visual Studio 2010中运行带有参数-UnregServer
的应用程序,以找出错误是什么。函数DeleteService()
失败并显示错误:
ERROR_SERVICE_MARKED_FOR_DELETE
在关闭服务的所有打开句柄之前,不会删除该服务。我逐步完成了对CloseServiceHandle()
函数的调用,似乎句柄已成功关闭。如果服务正在运行,也不会删除该服务。我检查了Process Manager,但服务没有运行。服务是否因为服务之前停止响应而未被删除?
我尝试重新启动计算机,但它已经消失了。仍然,我不明白为什么我必须重新启动我的计算机时,在我收到错误1053之前不需要重新启动服务就可以取消注册。除非我当然不能取消注册服务,因为服务因为停止响应而没有停止。
我会继续尝试更多的东西,但我的想法已经不多了。
UPDATE2:
我尝试重建原始应用程序,我知道这是一项服务。这意味着问题与我的任何代码无关。有些东西搞砸了服务控制管理器。我不明白为什么我只在这个应用程序中得到这个错误。我有另一个与此应用程序通信的应用程序,它也需要注册为服务。我对该应用程序没有任何问题。它运作得很好。
但由于某种原因,这个应用程序突然停止响应。我不知道我改变或破坏了什么导致服务在它到达我的main()
函数之前挂起。我现在唯一能想到解决问题的方法是重新格式化服务器,这不是一个选项。
谢谢, Krzys
答案 0 :(得分:2)
我觉得自己很蠢。
我一直在使用远程桌面连接来连接此服务器。好吧,服务正在启动并出错。我没有看到任何错误或消息框的原因是因为它们出现在控制台会话上。我没有连接到控制台会话。我使用:
连接到服务器mstsc.exe / admin
现在我可以看到程序停止响应的位置。
感觉好极了,浪费了10个小时。