Contexto: Como parte de uma suíte de testes automatizada que estou construindo, preciso configurar o Autologon em minhas máquinas virtuais "on demand". Por demanda, quero dizer que não quero necessariamente pré-configurar minha VM ou qualquer snapshot para que o Autologon já esteja configurado, por motivos de segurança e também um grande business case.
Minha solução até agora: estou copiando um script para a máquina convidada e, em seguida, usando o Sysinternals PsExec para executá-lo. O script é:
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultUserName /t REG_SZ /d myusername
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultPassword /t REG_SZ /d myfakepassword
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultDomainName /t REG_SZ /d mydomain
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v ForceAutoLogon /t REG_SZ /d 1
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v AutoAdminLogon /t REG_SZ /d 1
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoLogonChecked" /f /ve /d 1
Nota : Eu não acredito AutoLogonChecked é necessário para máquinas pós Windows 2000, mas eu estou fazendo isso apenas no caso de agora. Talvez ForceAutoLogon não seja, ainda não tenho certeza.
O problema : Eu vejo PsExec executa isso corretamente e todos os valores estão no registro, no entanto, quando eu reiniciar a máquina, o usuário não está automaticamente conectado ... Quando eu executo isso uma segunda vez, em seguida, reinicie a máquina, o usuário é finalmente logado.
Um diff entre os estados do registro mostra que a primeira vez que eu corro isso, está faltando o "1" para AutoAdminLogon e também a chave DefaultPassword. Na segunda vez que eu o executo, esses valores estão corretamente intactos como eu pretendia.
Então, o que está acontecendo aqui? Isso é esperado? este postar declarações no final que realmente tudo só funciona (o problema era que um script de logoff estava definindo os valores). Não parece funcionar para mim no entanto.
Observe isso parece exclusivo para o Windows 7, não ocorre no Windows XP
Observe também que você não precisa do PsExec para recriar o problema - apenas modifique o registro você mesmo
EDITAR / atualizar :
- Faça o login de forma interativa e execute o script (para não executá-lo remotamente), o logoff faz login automaticamente (assim, funciona)
- executar remotamente o script no convidado quando estou logado interativamente, fazer logoff automaticamente me conecta de volta (assim, funciona)
- executar remotamente o script em guest quando com sessão não-interativa se eu fizer login depois (então, interativo agora), em seguida, recuar, ele me conecta novamente (então, então funciona)
EDIT / update 2 : Isso ocorre apenas para Win7x86, Win7x64, Win8x64. Isso não ocorre para o Windows XP
EDITAR 3 : Eu tenho o mesmo comportamento usando a ferramenta Autlogon.exe do Sysinsternal.