为什么Windows在Kiosk模式下启动shell应用程序这么慢?

我正在configurationWindows 7 Professional x64,以“kiosk”模式运行自定义应用程序。 也就是说,将我的应用程序和自动loginreplace为默认shell( explorer.exe )作为特定用户。

 [HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminLogon"="1" "DefaultUserName"="applicationuser" "Shell"="c:\Program Files\my-app\whatever.exe" 

我也closures了启动时的Windows徽标启animation面(在msconfig中)。 该机器不在任何域上。

当我打开机器时,我看到BIOS屏幕,然后出现黑屏(Windows徽标已经出现),然后用户login页面快速闪烁(在自动login期间), 然后在空白屏幕上停留数分钟

光标在屏幕上,但无法使用。 而且我相当确定这不是我的应用程序,因为当我在普通的桌面环境中运行它时,启动速度非常快。 对于正在启动自助服务terminal的用户来说这是一个糟糕的体验,或者在自助terminal启动之后,但在应用程序启动之前,可能正在接近自助服务terminal

有没有人知道Windows在售货亭模式下幕后可以解释这种延迟? 或者如何追踪发生了什么?

还是有没有人有任何想法欺骗用户认为亭子运作? (我不知道还有什么我可以控制在这个时候在Windows kiosk启动…我可以飞溅一个背景图像,而不是单调的蓝/蓝屏?)

很可能你没有告诉Winlogon你的应用程序已经准备好了。 把下面的代码放在main()的顶部(这是所有的C ++,所以你可能需要翻译成你select的语言):

 /* * Signal to Winlogon that the shell has started and the login screen can be dismissed */ HANDLE hShellReadyEvent; hShellReadyEvent = OpenEvent(EVENT_MODIFY_STATE, false, L"msgina: ShellReadyEvent"); if( hShellReadyEvent != NULL ) { SetEvent( hShellReadyEvent ); CloseHandle( hShellReadyEvent ); } 

这将从您的启动过程至less30秒。

确保没有安装从您的信息亭的位置无法访问的映射驱动器。 如果在实验室或testing设备中映射驱动器,并尝试从无法访问networking的地方访问该驱动器,则login需要很长时间,直到Windows意识到远程驱动器无法访问。