Windows服务与标准exe有何不同?

Lea*_*arp 42 service windows-services

Windows服务和标准exe之间有什么区别?

Eri*_* J. 44

Windows服务始终在计算机启动后运行(只要它配置完毕).标准EXE仅在用户登录时运行,并在用户注销时停止.

即使没有人登录,您也可以使用Windows服务来查找始终需要运行的内容.

您可以将标准EXE用于用户在登录时运行的程序.


Gre*_*ill 35

Windows服务具有特殊ServiceMain功能,必须正确响应服务控制管理器(SCM)命令才能作为服务运行.另一方面,常规可执行文件具有mainWinMain功能,并且不需要响应任何特定的控制命令.

  • 技术上正确,但我认为它不能很好地回答这个问题.(见Eric J的回答). (5认同)
  • 我绝对认为这是一个比选择的答案更正确的答案。另一个更好地回答了“什么是 Windows 服务”这个问题。 (2认同)

Dav*_*ter 12

如果您正在讨论实现后台操作,以下是我建议选择服务或无窗口.exe的标准:

选择一个exe如果:

  • 您需要它基于每个用户运行,并且仅在用户登录时运行
  • 您需要它与Windows桌面交互(通知图标等)
  • 它需要登录用户的所有权限(不多也不少)

选择服务如果:

  • 它可能需要在没有人登录时运行
  • 它通常不需要每用户数据或权限
  • 它只与网络通信
  • 它需要暴露新的"安全"对象.具有自己的声明性访问控制列表(DACL)的对象限制对某些帐户/组的访问.
  • 它需要登录用户可能无法使用的特殊权限.

服务很容易成为安全漏洞,所以更喜欢.exe的服务.有时候你需要两者.病毒检查程序需要能够访问文件系统上的每个文件(当前用户可能无法做到),但它还需要以通知对话框/弹出窗口和工具的形式向用户提供信息任务栏图标.服务无法直接与用户的GUI交互.他们可以使用标准的Windows IPC(进程间通信)服务,例如管道和共享内存区域.这些工具通常同时具有服务和每用户无窗口.exe,它使用Windows管道或共享内存区域与服务进行通信.

如果您想深入了解这些主题,请获取Keith Brown的"Windows安全编程".