Windows 7 - Script VBS para alterar o último usuário conectado

5

Com o Windows XP, eu costumava executar um script VBS depois de usar um computador cliente para definir sua conta de usuário como o último usuário conectado.

Infelizmente, o script não funciona mais no Windows 7. (resultando em alguns usuários bloqueando minha conta quando eles tentam fazer logon e descobrem que sua senha não é igual à minha!)

Aqui está um exemplo do script que eu estava usando:

link

EDIT: Informações adicionais sobre nosso ambiente

Nosso ambiente:

  • UAC ativado
  • Fazendo logon como conta 'itsupport', que é membro do grupo Administradores locais
  • Todos os sistemas agora têm o Windows 7 Enterprise instalado
  • Todos os sistemas são unidos a um domínio do Active Directory
por ovann86 13.06.2011 / 02:54

3 respostas

4

Obrigado àqueles que ajudaram com esse problema.

Depois de mais algumas pesquisas, descobri que o Windows 7 não usa a mesma chave de registro 'Winlogon' para armazenar o último usuário que efetuou logon, pois usa

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\LastLoggedOnUser

O segundo problema que tive foi permitir que o script VBS fosse executado como um usuário (administrador) sem ter que usar 'runas' ou um prompt de comando elevado.

Após algumas tentativas e erros, criei o seguinte script que altera com êxito o último usuário conectado para estações de trabalho Windows 7 adicionadas ao domínio.

Espero que os outros aqui achem útil - eu sei que irei!

Definir o Último Loggedon - Win7.vbs

    '--------------
'Start of UAC workaround code

If WScript.Arguments.length =0 Then
  Set objShell = CreateObject("Shell.Application")

  objShell.ShellExecute "wscript.exe", Chr(34) & _
  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else

'--------------
'Start of code

    dim WSHShell
    Set WSHShell = Wscript.CreateObject("WScript.Shell")
    dim strRegKey
    strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
    strRegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\"

    StrUser = InputBox("Please enter in username," & vbCrLf & vbCrLf & "e.g. joe.local", "Set Last logged on", "UserName")
    StrDomain = InputBox("Please enter in domain for logon," & vbCrLf & vbCrLf & "e.g. DOMAIN", "Set Logon Domain OR leave blank if a local user account")

    If StrDomain = "" then
         StrDomain = "."
       Else
    End If

    wshShell.RegWrite strRegKey & "LastLoggedOnUser", StrDomain & "\" & StrUser, "REG_SZ"

        WScript.Echo "Setup Completed. Please restart the computer to complete the process"

    '--------------
    'End of code


    '--------------
    'End of UAC workaround code

    End If

Fonte Completa: Windows 7 - VBS script para alterar o último usuário logado

    
por 23.07.2011 / 03:36
2

Eu estou supondo que o Windows 7 está configurando o registro algum tempo depois de executar o script. Provavelmente quando você sair. Você poderia fazer algo como armazenar o nome de usuário no registro sob uma chave personalizada ( HKLM\Software\MyCompany é bastante comum). Então você faz um script de desligamento ou inicialização que faz:

  1. Leia o nome de usuário de um valor na chave personalizada. Se estiver em branco, não faça nada e saia.
  2. Defina os valores HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WINLOGON\ para usar este nome de usuário.
  3. Anule o valor do nome do usuário na chave do Registro personalizada.

Depende de quando o Windows está preenchendo essa chave de registro e como está determinando o último usuário conectado. Você pode usar o registro remoto (regedit ou reg.exe ) para determinar os dados nos valores WinLogon.

    
por 14.06.2011 / 01:53
0

Eu fiz alguns testes na minha máquina Win 7 x64 Enterprise. O script pode ser iniciado por um usuário sem direitos administrativos e todos os prompts são exibidos corretamente. O truque é lançar o script em uma conta com direitos de administrador local E com o token de acesso administrativo solicitado (por padrão, um usuário administrador local não tem direitos de administrador completos antes da solicitação).

Para executar corretamente seu script, inicie o cmd com direitos de administrador (Iniciar, digite CMD na pesquisa do menu Iniciar, clique com o botão direito em cmd e escolha 'Executar como administrador') e, em seguida, inicie seu script nesta janela do CMD.

    
por 13.06.2011 / 04:51