Você qualifica que "aberto" está disponível em sua instrução if, mas "Desktop" nem sempre está disponível e não está envolvido em uma instrução de qualificação. Em outras palavras, "Desktop" nem sempre é uma chave, mas seu loop sempre a procura, desde que a chave "open" esteja definida.