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.