Windows-7
為什麼處於 kiosk 模式的 Windows 啟動 shell 應用程序如此緩慢?
我正在配置 Windows 7 Professional x64 以在“kiosk”模式下將自定義應用程序作為 shell 執行。也就是說,用
explorer.exe
我的應用程序替換預設 shell ( ) 並以特定使用者身份自動登錄。[HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminLogon"="1" "DefaultUserName"="applicationuser" "Shell"="c:\Program Files\my-app\whatever.exe"
我還關閉了啟動時的 Windows 徽標閃屏(在 msconfig 中)。該機器不在任何域上。
當我打開機器電源時,我看到 BIOS 螢幕,然後是黑屏(Windows 徽標所在的位置),然後使用者登錄頁面快速閃爍(在自動登錄期間),然後它在空白螢幕上停留了幾分鐘.
游標在螢幕上但無法操作。而且我相當肯定它不是我的應用程序,因為當我在正常桌面場景中執行它時,它啟動得非常快。對於正在啟動資訊亭或可能在資訊亭啟動後但在應用程序啟動之前接近資訊亭的使用者來說,這是一種糟糕的體驗。
有誰知道 Windows 在 kiosk 模式下在幕後做了什麼,這可能解釋了這種延遲?或者如何追踪正在發生的事情?
或者有沒有人有任何奇特的想法來欺騙使用者認為資訊亭正在執行?(我不知道此時在 Windows 資訊亭啟動時我還能控制什麼……我可以啟動背景圖像而不是單調的綠色/藍屏嗎?)
您很可能沒有告訴 Winlogon 您的應用程序已準備就緒。將以下程式碼放在 main() 的頂部(這都是 C++,因此您可能需要翻譯成您選擇的語言):
/* * 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 ); }
這將從您的啟動過程中縮短至少 30 秒。