Por que o Windows no modo quiosque inicia o aplicativo shell tão lentamente?

2

Estou configurando o Windows 7 Professional x64 para executar um aplicativo personalizado como o shell, no modo "quiosque". Ou seja, substituir o shell padrão ( explorer.exe ) por meu aplicativo e logon automático como um usuário específico.

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

Também desliguei a tela inicial do logotipo do Windows na inicialização (no msconfig). A máquina não está em nenhum domínio.

Quando eu ligo a máquina, vejo a tela da BIOS e, em seguida, uma tela preta (onde o logotipo do Windows estaria), a página de logon do usuário pisca rapidamente (durante o autologon), uma tela em branco por vários minutos .

O cursor está na tela, mas inoperante. E tenho quase certeza de que não é meu aplicativo, porque quando eu o executo em um cenário de desktop normal, ele é iniciado muito rapidamente. Essa é uma experiência ruim para o usuário que está inicializando o quiosque ou pode estar se aproximando do quiosque após ter sido inicializado, mas antes do aplicativo ser iniciado.

Alguém sabe o que o Windows está fazendo nos bastidores no modo de quiosque que pode explicar esse atraso? Ou como rastrear o que está acontecendo?

Ou alguém tem alguma idéia extravagante em enganar o usuário a pensar que o quiosque está funcionando? (Eu não sei o que mais eu tenho controle sobre neste momento na inicialização do Windows quiosque ... posso respingar uma imagem de fundo em vez da tela drab geen / blue?)

    
por Anthony Mastrean 24.02.2012 / 19:58

2 respostas

5

O mais provável é que você não esteja dizendo ao Winlogon que seu aplicativo está pronto para ser usado. Coloque o seguinte código no topo do main () (isto é tudo C ++, então você pode ter que traduzir para o seu idioma de preferência):

/*
 * 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 );
}

Isso reduzirá pelo menos 30 segundos a partir do seu processo de inicialização.

    
por 23.01.2013 / 22:25
1

Certifique-se de que não haja unidades mapeadas inacessíveis a partir do local de instalação do seu quiosque. Se você mapear uma unidade em seu laboratório ou instalação de teste e tentar acessá-la de um local sem acesso à rede, o login levará muito tempo até que o Windows perceba que a unidade remota está inacessível.

    
por 15.05.2012 / 21:58