none
Script para consultar último usuário logado em Windows XP 64 bits RRS feed

  • Pergunta

  • Olá amigos,

    Preciso de um script para consultar o último usuário que logou numa máquina que tem instalado Windows 64 bits.

    No Windows 32 bits eu consigo esta informação executando o comando abaixo:

    Set WshShell = WScript.CreateObject("WScript.Shell")
    set objFSO = CreateObject("Scripting.FileSystemObject")
    strLastLogon0 = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName")

    Mas não Windows 64 bits não consigo consultar esta chave acima e o script pega as informações da chave abaixo, e as informações não são iguais da versão 32 bits.

    strLastLogon1= WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName")

    Alguém tem alguma solução ou dica para este problema?


    Leonardo Côco .:. MCP / MCDST / MCTS / MCSA / ITILF .:. Se a resposta foi útil classifique-a.
    terça-feira, 29 de março de 2011 20:49

Todas as Respostas

  • Olá Leonardo, não sei se te ajuda, o script abaixo gera um arquivo de log toda vez que um usuário efetua login. Peguei na net.

    [ ]´s

     

    =========== Início =========================

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    StrComputer = "."
    FileLog = "\\share\share\"& WshNetwork.UserName &".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
        For Each IPConfig in IPConfigSet
          If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
    WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & IPConfig.IPAddress(j)
            Next
          End If
        Next


    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function
    =========== FIM =========================


    Dan Pinheiro RJ - Brasil
    quarta-feira, 30 de março de 2011 12:10
  • Olá Dan,

    No momento da execução do script ele precisa saber qual foi o ultimo usuário logado e consultar esta informação.

    O que preciso é saber como consultar esta informação no registro do Windows 64 bits, pois só consegui consultar na versão do XP 32 bits

    Desde já agradeço sua atenção

     


    Leonardo Côco .:. MCP / MCDST / MCTS / MCSA / ITILF .:. Se a resposta foi útil classifique-a.
    quarta-feira, 30 de março de 2011 20:26
  • Olá Leonardo, não sei se te ajuda, o script abaixo gera um arquivo de log toda vez que um usuário efetua login. Peguei na net.

    [ ]´s

    =========== Início =========================

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    StrComputer = "."
    FileLog = "\\share\share\"& WshNetwork.UserName &".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
        For Each IPConfig in IPConfigSet
          If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
    WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & IPConfig.IPAddress(j)
            Next
          End If
        Next


    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function
    =========== FIM =========================


    Dan Pinheiro RJ - Brasil

    Gostei do seu script mas gostaria de saber se tem como salvar como o numero_do_ip.txt e dentro dele colocar o usuarios que fizeram o logon neste ip exemplo. Usuario XXX Fez Logon Em 15/03/2012 13:10:30 Na Estação de Trabalho.

                  Usuario YYY Fez Logon Em 17/03/2012 12:50:35 Na Estação de Trabalho.

    Obrigado desde ja.

    sábado, 17 de março de 2012 16:12
  • Cara, utilizo um outro esquema mas acho que vai te ajudar.

    Grava login:

    Set WshNetwork = WScript.CreateObject("WScript.Network")

    StrComputer = "."
    FileLog = "%PASTA_COMPARTILHADADA_REDE%"& WshNetwork.UserName &".csv"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      WriteLog "Logon ;" & now() & "; No Computador: " & WshNetwork.ComputerName & "; IP " & IPConfig.IPAddress(j)
            Next
        End If
    Next

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    Grava Logoff:

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    StrComputer = "."
    FileLog = "%PASTA_COMPARTILHADADA_REDE%\"& WshNetwork.UserName &".csv"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      WriteLog "Logoff ;" & now() & "; No Computador: " & WshNetwork.ComputerName & "; IP " & IPConfig.IPAddress(j)
            Next
        End If
    Next

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    Ai no caso você pode ver por usuário quem logou aonde!!!!

    Abraço,

    Márcio Elifas Lima

    MCP|MCTS

    quinta-feira, 19 de abril de 2012 15:42