Day 8747 「交互式服务检测」是什么,为嘛会在任务栏上闪烁?

翻译练习,原文在此:http://blogs.msdn.com/b/patricka/archive/2010/04/27/what-is-interactive-services-detection-and-why-is-it-blinking-at-me.aspx

您是否在任务栏上看到过这个图标一闪一闪的?

而当单击这个图标后,以下对话框将出现:


如果点击「查看消息」,屏幕会一闪然后转到一个空白桌面,可能会有些对话框冒出来。

发生了什么事?
服务和系统进程运行在0号Session(会话)中。在Vista之前,控制台(第一登录用户的桌面)也运行在0号Session中。自Vista起,系统引入了Session 0隔离机制,以保护服务不受从控制台桌面提权的溢出攻击影响。
交互式服务检测(即任务栏上闪动的那个图标)是为传统应用程序准备的一种兼容性手段,当检测到某个服务尝试与桌面直接交互时会被启用(译注:例如安装某些旧式驱动时,驱动程序向用户进行提示)。此功能由「交互式服务检测」服务(UI0Detect)提供支持。

此服务的行为


「交互式服务检测」服务被设定为「手工」启动,这意味着它不会随系统一并启动。
在32位Windows系统中,系统会检测到尝试与桌面交互的行为,并启动UI0Detect服务,任务栏上就会出现那个闪动的图标。
在64位Windows系统中,如果一个服务是原生64位程序,则系统不会启动UI0Detect活动,因此,尝试与桌面互动的服务就好像挂起了一样。如果需要为64位服务提供交互式服务检测的兼容性,您需要确保此服务已经启动。
有趣的是,如果一个32位服务在64位系统中运行,WOW64(译注:64位系统下为普通应用程序提供的仿真层,全称为Windows 32-bit On Windows 64-bit)将启动UI0Detect服务,而「交互式服务检测」的提示将会弹出。之所以会这样是因为WOW64环境会尽可能模拟32位系统的行为——包括提供此类兼容性。
若想尝试「交互式服务检测」提示,一种方法是使用PsExec,例如,在控制台输入如下指令(译注:下一段文字是在64位系统的前提下进行说明的):
psexec \\localhost -i 0 calc.exe
此命令将在0号Session中启动计算器(calc.exe),是一种快速模拟系统服务与桌面进行交互的方法。有趣的是,由于PsExec是32位程序,所以UI0Detect将会被激活,而忽略计算器其实是个64位程序的事实。以下为此测试在Process Explorer中的显示:


可以看到,UI0Detect在0号Session中启动,并在1号Session中创建了一个进程。1号Session中的UI0Detect是「交互式服务检测」的提示对话框。PSEXESVC.exe是PsExec的命令行服务,注意,这是一个在0号Session中运行的32位程序(译注:通过上面的命令行中指定的-i 0参数达成),而Calc.exe通过PsExec中指定的参数运行在0号Session中。

多种问题,一种解药
如果一项服务出了问题,那么「远程桌面」服务和/或「快速用户切换」服务可能也会有问题。0号Session隔离、远程桌面和快速用户切换使用同一套隔离机制,所以,修好一个问题还不够,可能还要修理很多并不知道的问题。

译者附注

从以上说明我们可以看出,「交互式服务检测」其实是Vista/7系统的一种保护机制,利用系统服务原则上不应该弹出对话框的特点,将由服务弹出的内容拦截在隔离桌面中,以保护用户不受实际的侵扰。所以,当系统无缘无故地弹出「交互式服务检测」提示,并且在隔离桌面中弹出一些网页、广告等不知所谓的东西,你要做的第一件事不是想如何关掉「交互式检测服务」,而是尽快检查系统是否已被木马、病毒所感染。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

 剩余字数 ( Characters available )

Your comment will be available after auditing.
您的评论将在通过审核后显示。

Please DO NOT add any links in your comment, otherwise it would be identified as SPAM automatically and never be audited.
请不要在评论中插入任何链接,否则将被自动归类为垃圾评论,且永远不会被提交给博主进行复审。

*