【发布时间】:2016-05-15 12:10:19
【问题描述】:
这是我用 Visual C++ 6.0 编写的程序代码:
#include <Windows.h>
#include "stdafx.h"
#include <stdlib.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
while(true)
{
int sleepInterval = rand()%15;
Sleep(sleepInterval*1000);
WinExec("notepad.exe" ,SW_SHOWNORMAL);
}
return 0;
}
然后我移动由该代码生成的 *.exe 文件并将其移动到我的桌面。我从那里开始。一切正常,我的意思是记事本编辑器窗口不时出现。 然后我在命令提示符下使用以下命令创建了 Windows 服务: C:\Documents and Settings\Administrator>sc create ThemesService2 binPath= "C:\Documents and Settings\Administrator\Desktop\win32apphelloworld.exe" DisplayName= "Themes Service2" start= auto
命令提示符的结果是:[SC] CreateService SUCCESS 到这里一切都很好 - 创建了一个服务,它必须在 Windows 启动时自动启动。我重新启动。然后什么也没有发生,记事本中的窗口没有出现。我从“开始”菜单->“运行”打开 Services.msc。该服务在那里,但它的状态是空的,我的意思是它的状态不是“已启动”。它的“启动类型”应该是“自动”。 但它没有开始。我尝试用鼠标右键单击手动启动它,然后单击“开始”,然后出现一个消息框,上面写着:“错误 1053:服务没有及时响应启动或控制请求”。有人能告诉我这项服务没有启动的原因是什么吗? 谢谢
【问题讨论】:
-
服务在不同的会话中运行,因此您不会看到任何记事本窗口。
-
好吧,我不知道这个。好的,但是当我在 Services.msc 中检查服务时,即使我没有看到记事本窗口,服务状态也不应该仍然是“已启动”吗?目前它不是“开始”,我将自己理解为“未运行”?
-
您的
WinMain永远不会返回,这与您收到的错误消息一致。也就是说,我不知道您是否可以从常规可原谅的情况下创建服务。需要一个服务来实现某些回调。