Почему Windows в режиме киоска запускает приложение оболочки так медленно?
Я настраиваю Windows 7 Professional x64 для запуска пользовательского приложения в качестве оболочки в режиме "киоска". То есть замена оболочки по умолчанию (explorer.exe
) с моим приложением и autologon в качестве конкретного пользователя.
[HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AutoAdminLogon"="1"
"DefaultUserName"="applicationuser"
"Shell"="c:\Program Files\my-app\whatever.exe"
Я также отключил заставку с логотипом Windows при загрузке (в msconfig). Машина не на каких доменах.
Когда я включаю машину, я вижу экран BIOS, затем черный экран (там, где был бы логотип Windows), затем страница входа пользователя быстро мигает (во время автологона), затем она сидит на пустом экране в течение нескольких минут.,
Курсор находится на экране, но не работает. И я совершенно уверен, что это не мое приложение, потому что когда я запускаю его в обычном настольном сценарии, оно запускается очень быстро. Это плохой опыт для пользователя, который запускает киоск или, возможно, приближается к киоску после его загрузки, но до запуска приложения.
Кто-нибудь знает, что Windows делает за кулисами в режиме киоска, что может объяснить эту задержку? Или как отследить, что происходит?
Или у кого-нибудь есть какие-нибудь причудливые идеи обмануть пользователя, заставив его думать, что киоск работает? (Я не знаю, что еще я могу контролировать в этот момент при запуске киоска Windows... могу ли я выплеснуть фоновое изображение вместо серого или синего экрана?)
2 ответа
Скорее всего, вы не говорите 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 секунд с момента запуска.
Убедитесь, что нет подключенных дисков, недоступных с места установки вашего киоска. Если вы подключите диск в своей лаборатории или на испытательном стенде и попытаетесь получить к нему доступ из места, где нет доступа к сети, вход в систему займет слишком много времени, пока Windows не поймет, что удаленный диск недоступен.