Ну, вот и все ... (это не будет легко;)
Сначала включите аудит в secpol.msc
.
Я обнаружил, что это необходимо, потому что другие события вызваны слишком рано, чтобы получить имя хоста.
- Нажмите Пуск и введите
secpol.msc
затем нажмите Enter.
появится окно локальной политики безопасности
- Теперь перейдите к
Local Policy
> Audit Policy
щелкните правой кнопкой мыши параметр политики Audit account logon events
и выберите « Properties
.
- Теперь установите флажок
Success
(неудачные попытки не будут регистрироваться таким образом)
- Выход из
secpol.msc
Теперь создайте VBScript-файл (например, с именем c:\temp\log.vbs
):
(также отредактируйте расположение нужного файла журнала, здесь 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
Теперь для последней части создайте запланированное задание для запуска этого скрипта.
- Нажмите Пуск и введите
taskschd.msc
затем нажмите Enter.
- Выберите
Create Task
на правой панели.
- Назовите это
Logon RDP
или что-то
- В-вкладке Trigger выберите Создать и выберите "Начать задачу"
On an event
- В "Журнале" выберите
Security
и в "Event ID" введите 4624
- Хит Ок
- На вкладке "Действие" выберите « Создать» и выберите "Запустить программу".
- В программе типа
cscript.exe
и в поле Добавить аргумент введите c:\temp\log.vbs
- Хит Ок дважды
Теперь, когда кто-то входит в систему через RDP, его имя хоста регистрируется в c:\temp\rdp.log
Обратите внимание, что также будут регистрироваться локальные логины (я еще этого не проверял, потому что я нахожусь на пульте :)
но я думаю, это не проблема.
Конечно, вы можете адаптировать log.vbs
для включения имени пользователя, удаленного IP- адреса ... и т.д.
(pfew, Windows XP была намного проще. Тот просто регистрирует имя хоста в событии)
Может быть, кто-то может придумать более простое решение :)
Редактировать:
Я также обнаружил, что в журнале событий безопасности есть идентификаторы событий 4624. Ищите те с Logon Type: 3
. Он должен содержать имя Workstation Name
компьютера, который вошел в систему через RDP.
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
New Logon:
Security ID: User-PC\User
Account Name: User
Account Domain: User-PC
Logon ID: 0xcd5c10
Logon GUID: {00000000-0000-0000-0000-000000000000}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: XPS8500
Source Network Address: -
Source Port: -
Редактировать № 2
Это из полностью чистой установки Windows 7.
(Основной компьютер - Test-pc
а компьютер, на котором я вошел - XPS8500
):