为什么在通过服务运行程序时,程序是否实际显示?

时间:2009-11-09 06:38:39

标签: windows windows-services

当运行一个程序,例如记事本,作为服务时,您是否在视觉上看不到该程序? 我看到记事本在任务管理器中运行,但我实际上看不到它的实例正在运行。这是为什么?

5 个答案:

答案 0 :(得分:1)

服务用作后台应用程序,而不是前台应用程序。通常,它们在没有直接用户输入或通过IPC的用户输入的情况下运行(通常为多个应用程序提供集中点以进行通信)。

将任何应用程序设置为仅作为服务运行并不常见。作为服务运行的应用程序通常是专门设计的,因为它们执行某些任务,并且可能希望始终运行以执行此类任务。

答案 1 :(得分:0)

应用程序实际上需要支持作为服务运行 - 通常通过识别“\ service”命令行键来完成。某些应用程序会识别出没有“\ service”键,并且不执行任何操作或显示警告。

当应用程序“作为服务”启动时,通常意味着它必须在后台连续工作,并且当前没有用户登录。这就是为什么它不应该指望任何用户输入,因此不显示窗口。

答案 2 :(得分:0)

添加@Quintin Robinson的答案,他们没有出现在任务管理器上的原因是因为他们(通常)是从一个伞形流程运行的。

为了给您提供更好的图片,请下载并运行Microsoft's Process Explorer,然后将鼠标悬停在正在运行的“svchost.exe”进程之一上。

您应该会看到一些正在其下运行的服务。

答案 3 :(得分:0)

Windows中的所有用户互动都通过Windowstations进行。默认情况下,Windows服务与非交互式工作站“交互”。它不是您连接的电台,因此您看不到任何输出。

您可以通过更改服务属性并启用“允许服务与桌面交互”来更改此行为。

您可以阅读有关此here的更多信息。

答案 4 :(得分:0)

默认情况下,作为服务运行的应用程序(或由作为服务运行的其他应用程序启动的应用程序)运行在无法与您看到的桌面交互的单独桌面上。

如果您希望能够与服务进行交互,则可以相应地设置服务属性。

话虽这么说,你用记事本看到的几乎肯定与服务无关。