Windows服务和标准exe之间有什么区别?
答案 0 :(得分:44)
Windows服务始终在计算机启动后运行(只要它配置完毕)。标准EXE仅在用户登录时运行,并在用户注销时停止。
即使没有人登录,您也可以将Windows服务用于始终需要运行的内容。
您可以将标准EXE用于用户在登录时运行的程序。
答案 1 :(得分:33)
Windows服务具有特殊的ServiceMain
功能,必须正确响应服务控制管理器(SCM)命令才能作为服务运行。另一方面,常规可执行文件具有main
或WinMain
函数,不需要响应任何特定的控制命令。
答案 2 :(得分:12)
如果您正在讨论实施后台操作,以下是我建议选择服务或无窗口的标准.exe:
如果选择exe:
在以下情况下选择服务:
服务很容易成为安全漏洞,所以更喜欢.exe的服务。有时候你需要两者。病毒检查程序需要能够访问文件系统上的每个文件(当前用户可能无法做到),但它还需要以通知对话框/弹出窗口和工具的形式向用户提供信息任务栏图标。服务无法直接与用户的GUI交互。他们可以使用标准的Windows IPC(进程间通信)服务,例如管道和共享内存区域。这些工具通常同时具有服务和每用户无窗口.exe,它使用Windows管道或共享内存区域与服务进行通信。
如果您想深入了解这些主题,请获取Keith Brown的“Windows安全编程”。
答案 3 :(得分:2)
服务(通常)是没有UI的标准exe。即使没有用户登录到计算机,它也可以运行,并且它的访问权限和文件系统视图不依赖于用户登录的位置。
答案 4 :(得分:1)
从EXE二进制文件的角度来看,从编译器的C库的角度来看,Windows服务看起来与标准的Unix程序或Windows控制台程序完全相同。即main()
入口点。使服务与众不同的是Microsoft Windows(通常在启动时从注册表中)加载/调用它的方式。服务可以(并且应该)通过Windows API调用告诉SC.exe应用程序[Service Control Manager],该服务已启动,停止,暂停等。