Bem, aqui vai ... (isso não vai ser fácil;)
Primeiro, habilite a auditoria em secpol.msc .
Achei que isso é necessário porque os outros eventos foram acionados cedo demais para obter o nome do host.
- Clique em Iniciar, digite
secpol.msce, em seguida, pressione enter .
a janela Política de Segurança Local será exibida - agora navegue até
Local Policy>Audit Policy
e clique com o botão direito na opçãoAudit account logon eventspolicy e escolhaProperties. - Agora, verifique a caixa
Success(tentativas malsucedidas não serão registradas dessa maneira) - Sair de
secpol.msc
Agora crie um arquivo VBScript (por exemplo, chamado c:\temp\log.vbs ):
(também edite a localização do arquivo de log desejado, aqui c:\temp\rdp.log )
Function sessionNumber
Dim oShell, oExec, sOutput, iUserPos, iUserLen, iStatePos
Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec("query session %username%")
sOutput = LCase(oExec.StdOut.ReadAll)
iUserPos = InStr(sOutput,LCase(oShell.ExpandEnvironmentStrings("%username%")))
iStatePos = InStr(sOutput,"active")
iUserLen = Len(oShell.ExpandEnvironmentStrings("%username%"))
sessionNumber = CInt(Trim(Mid(sOutput,iUserPos+iUserLen,iStatePos-iUserPos-iUserLen)))
End Function
Function clientName
Dim oShell
Set oShell = CreateObject("WScript.Shell")
On Error Resume Next
clientName = LCase(oShell.RegRead("HKCU\Volatile Environment\"&sessionNumber&"\CLIENTNAME"))
If Err.Number<>0 Then
clientName = "unknown"
End If
End Function
outFile="c:\temp\rdp.log"
Const ForAppending = 8
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFile=objFSO.OpenTextFile(outFile,ForAppending,True)
objFile.Write now() & " ; " & clientName & vbCrLf
objFile.Close
Agora, para a última parte, crie uma tarefa agendada para iniciar este script.
- Clique em Iniciar, digite
taskschd.msce, em seguida, pressione enter . - Escolha
Create Taskno painel direito - Nomeie-o como
Logon RDPou algo - Na guia Trigger, escolha Novo e escolha "Iniciar a tarefa"
On an event - Em "Log", escolha
Securitye em "ID do evento" digite4624 - Clique em Ok
- Na aba Ação, escolha Novo e escolha "Iniciar um programa"
- No tipo de programa
cscript.exee em Adicionar tipo de argumentoc:\temp\log.vbs - Pressione Ok duas vezes
Agora, quando alguém faz login via RDP, seu nome de host é registrado em c:\temp\rdp.log
Note que também logins locais serão registrados (eu não testei isso ainda porque estou em um controle remoto :)
mas eu acho que isso não é um problema.
Você poderia, é claro, adaptar o log.vbs para incluir nome de usuário, ip remoto ... etc.
(pfew, o Windows XP foi muito mais fácil. Esse apenas registra o nome do host no evento)
Talvez alguém possa encontrar uma solução mais fácil:)


Editar:
Tambémdescobrique,nologdeeventosdesegurança,háasIDsdeeventos4624.ProcureaquelascomLogonType:3.EledeveconteroWorkstationNamedamáquinaqueefetuouloginviaRDP.
Anaccountwassuccessfullyloggedon.Subject:SecurityID:NULLSIDAccountName:-AccountDomain:-LogonID:0x0LogonType:3NewLogon:SecurityID:User-PC\UserAccountName:UserAccountDomain:User-PCLogonID:0xcd5c10LogonGUID:{00000000-0000-0000-0000-000000000000}ProcessInformation:ProcessID:0x0ProcessName:-NetworkInformation:WorkstationName:XPS8500SourceNetworkAddress:-SourcePort:-Editar#2
IstoédeumainstalaçãodoWindows7completamentelimpa.
(AmáquinaprincipaléTest-pceamáquinacomaqualeufizlogonéXPS8500):