互动服务

en
【勇芳软件工作室】汉化HomePreviousNext

交互式服务是可以与应用程序桌面交互的服务。其他桌面不接收用户输入。有关详细信息,请参阅窗口站和桌面.

交互式服务必须在LocalSystem帐户的上下文中运行,并配置为以交互方式运行。当CreateService呼叫中的【dwServiceType】参数设置为包括SERVICE_INTERACTIVE_PROCESS标志时,服务被配置为交互式运行。但是,以下注册表项包含一个值NoInteractiveServices,该值控制SERVICE_INTERACTIVE_PROCESS标志的效果:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows

NoInteractiveServices值默认为0,这意味着标有SERVICE_INTERACTIVE_PROCESS标志的服务将被允许以交互方式运行。当NoInteractiveServices值设置为非零值时,此后不会启动任何服务,无论是否配置了SERVICE_INTERACTIVE_PROCESS,都将被允许以交互方式运行。

注意即使没有在本地系统帐户中运行或未配置为交互式运行,也可以从服务中显示一个消息框。只需使用MB_SERVICE_NOTIFICATION标志调用MessageBox函数。不要在服务初始化期间或从处理器例程调用MessageBox,除非您从单独的线程中调用它,以便及时返回到SCM。

还可以通过在界面窗口台和桌面上修改DACL,或通过模拟登录用户并直接打开交互式窗口站和桌面,从非交互式服务与桌面交互。有关详细信息,请参阅通过Win32服务与用户进行交互.