您是否在任务栏上看到过这个图标一闪一闪的?
而当单击这个图标后,以下对话框将出现:

如果点击「查看消息」,屏幕会一闪然后转到一个空白桌面,可能会有些对话框冒出来。
发生了什么事?
服务和系统进程运行在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系统的一种保护机制,利用系统服务原则上不应该弹出对话框的特点,将由服务弹出的内容拦截在隔离桌面中,以保护用户不受实际的侵扰。所以,当系统无缘无故地弹出「交互式服务检测」提示,并且在隔离桌面中弹出一些网页、广告等不知所谓的东西,你要做的第一件事不是想如何关掉「交互式检测服务」,而是尽快检查系统是否已被木马、病毒所感染。

注:所有评论将在审核通过后显示,请不要在评论内容的任何位置出现链接,否则您的评论将被自动移入回收站,且永远不会被复审。
All comments will be available after being manually reviewed, please do not include any links anywhere in your comment, otherwise your comment will be automatically deleted and are not eligible for review.