Como selecionar a conta na tela de login do Windows7, comece digitando o nome?

7

Quando o MacOS é inicializado e os usuários são solicitados a selecionar a (s) conta (s) na qual ele deseja fazer login, os usuários podem clicar no nome / ícone da conta com o mouse ou digitar o nome da conta.

Eu quero fazer o mesmo na tela de login do Windows7: tela de login aparece, eu começo a digitar o nome da minha conta, eu seleciono a conta com enter e então eu digito a senha e < kbd> entra novamente. Não há uso do mouse envolvido.

(Eu estou ciente do ciclismo de tabulação e difícil de seguir-quase-invisível-marcador-de-onde-o-foco-é-agora)

    
por akira 23.01.2011 / 09:09

3 respostas

9

Você está tentando criar um provedor de credenciais especializado. Eu não vou escrever um para você, nem mesmo para 5000 repetições, mas posso apontar você na direção certa.

O artigo Crie experiências de login personalizadas com provedores de credenciais para o Windows Vista explica os conceitos básicos da Microsoft afastar-se do modelo anterior GINA. Ele desenvolve uma amostra que demonstra os novos recursos por meio de um provedor de credencial híbrido que permite que um nome de usuário, senha e nome de domínio sejam armazenados em um cartão inteligente, de modo que, após a inserção do cartão, o usuário seja conectado automaticamente. p>

A Microsoft também fornece para download Provedor de Credenciais Amostras , que incluem um documento geral descrevendo como criá-las.

Se você pretende desenvolver o seu provedor de credenciais, sugiro strongmente depurá-lo dentro de uma máquina virtual, por razões óbvias.

    
por 26.01.2011 / 15:28
8

Pensando nisso novamente, há maneiras muito mais fáceis de realizar isso:

  1. Opção 1 (Confirmada) : Um bom e velho truque para fazer com que um programa seja executado na tela de login. : -)

    1. Assuma a propriedade e substitua % WINDIR% \ System32 \ osk.exe pelo programa da etapa 4.

    2. Vá para a Central de Facilidade de Acesso , use o computador sem mouse ou teclado .

    3. Ativar Usar teclado virtual .

    4. Salve e volte, no lado esquerdo, clique em Alterar configurações administrativas .

    5. Clique para aplicar as configurações à área de trabalho de login e salve.

  2. Opção dois (deve funcionar) : os serviços são sempre executados, para que possam iniciar programas na tela de login.

    1. Escreva um serviço C / C # que começa cedo, talvez configure seu tipo de inicialização para inicializar no registro.

    2. Permita que o serviço detecte C / C # quando o winlogon.exe é iniciado, após o qual ele inicia nossa programa.

  3. Opção três (parece não funcionar): O Agendador de Tarefas oferece opções para ele, tentei iniciar com base em "Inicialização" e no "Evento Winlogon WGA", mas ambos não tiveram sucesso, talvez eu precise definir outro usuário além de "Sistema" para que isso funcione ... Alternativa : DLL de notificação do Winlogon

  4. Isso nos permite executar nosso próprio programa escrito na tela de login!

    • Usando SetWindowsHookEx você poderia criar um gancho WH_KEYBOARD para manipular a entrada.

      • Alternativa : crie uma janela da GUI e dê esse foco à janela.
      • Alternativa 2 : se você ocultar o usuários você pode acompanhar a caixa de nome de usuário, veja AutoItX abaixo.
    • Usando o WMI, você pode enumerar todos os usuários locais .

    • A chamada das funções AutoItX permite-lhe manipular o Ecrã de Início de Sessão do Windows a partir da sua aplicação . Isso também nos permitirá detectar se estamos na tela de login, verificando se o explorador é executado.

      AutoItWindow mostra que a tela é: Class: AUTHUI.DLL: LogonUI Logon Window e o campo de senha é denominado Edit1 , para que você possa realmente ler os dados digitados.

    Desta forma, você deve ser capaz de executar um programa que ouve os caracteres que você digita, recuperar a lista de contas e quando ele encontrar uma correspondência autocompletar a conta apropriada.

    Eu sugeriria C ++ (Nativo) ou C # (PInvokes para chamadas de API, fácil WMI), mas qualquer idioma poderia caber ...

  5. Alternativa:

I think it might be possible to only use a compiled AutoIt script to accomplish this task, as you can track and manipulate the username box and also enumerate WMI, which is the sole thing you need to get this working. Perhaps you need to disable the tray icon feature though...

You can use AutoIt Window Info (place it as osk.exe) to see the class names at the login screen.

    
por 01.02.2011 / 01:21
0

O Windows Vista e o Windows 7 fazem isso imediatamente (por exemplo) para logins de domínio.

Isso só funciona em edições do Windows que suportam ingresso no domínio. Você pode fazer um script que faça isso para você em outras edições - avise-me e eu analisarei isso.

Inicie o Group Policy Editor ( Start > Run > gpedit.msc ).

Procure por Computer Config \ Windows Settings \ Security Settings \ Local Policies \ Security Options \ Interactive logon: Do not display last user name e defina como Enabled

Na próxima vez que fizer login, você poderá digitar o nome de usuário desejado.

    
por 01.02.2011 / 09:49