StartServiceCtrlDispatcher
全部标签 我正在用C#创建简单的服务管理器,因为我们将服务创建为应用程序的扩展。我能够获得带有exe文件路径的已安装服务列表,但愿望list中的一个功能是识别给定路径中未安装的服务,并使用安装按钮列出它们。有没有办法识别exe文件是不是Windows服务? 最佳答案 服务没有特殊属性,检测.exe是否为服务的唯一方法是查看它是否调用服务函数之一。以字符串形式查找StartServiceCtrlDispatcher可能是最佳选择。注意:如果有人知道您正在寻找这个,他们可以轻松地“加密”StartServiceCtrlDispatcher字符串并
我已尝试使用StartServiceCtrlDispatcher(),如https://msdn.microsoft.com/en-us/library/windows/desktop/bb540475(v=vs.85).aspx中所述,它可以工作,只是参数不会传递给SvcMain。我可以使用StartService()来解决这个问题吗?这两种启动服务的方法除了StartService()似乎需要的额外代码外还有其他区别吗? 最佳答案 这是服务启动的方式:首先,某些进程必须调用StartService()以告知服务控制管理器(SCM
我在Windows7上的visualstudio2008中有一个c++项目,我尝试在其中启动一个新服务。我以管理员身份运行visualstudio。我无法启动服务(甚至没有调用serviceMain)。这是我的主要功能:wchar_tstr[]={'s','e','s','m'};int_tmain(intargc,_TCHAR*argv[]){SERVICE_TABLE_ENTRYdispTable[]={{(wchar_t*)str,ServiceWork::ServiceMain},{NULL,NULL}};inti=StartServiceCtrlDispatcher(disp
我的Windows服务程序出现奇怪的错误。我的服务程序调用StartServiceCtrlDispatcher()在其main()的最开始,但它有时会因1063(ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)而失败.我知道如果用户手动启动程序(作为控制台程序)会发生此错误。但是,事实并非如此。我添加了一个代码来检查服务程序的父进程,当发生此错误时,它告诉services.exe是父进程(我认为可以安全地假设我的程序是由SCM正确启动)。不幸的是,这个错误不会在我的开发机器上重现,也无法自行调试,但在用户系统上捕获的错误日志告诉我们:这个问题似乎只发生在