Простой скрипт для регистрации подключений к удаленному рабочему столу

Я пытаюсь сделать простой небольшой скрипт в VBScript, который будет работать в фоновом режиме и регистрировать, если кто-то подключился к компьютеру удаленно и когда он ушел.

Я сделал это до сих пор, и это работает, если я запускаю скрипт вручную, но я хочу, чтобы он работал в фоновом режиме и записывал детали в журнал.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set myLog = objFSO.OpenTextFile("rdcmonitor.log",2, True)
Set oShell = CreateObject("WScript.Shell")
lastses="CONSOLE"
While True
    WScript.Sleep(1000)
    strSessionName = oShell.ExpandEnvironmentStrings("%SessionName%")
    if lastses <> Ucase(strSessionName) then
        lastses = Ucase(strSessionName)
        myLog.WriteLine vbLongDate & " __ session change (" & lastses & ")"
    End If
Wend

Я хочу, чтобы это работало в VBScript.

Есть идеи? Принимает ли "%SessionName%" только при запуске скрипта? Или это как-то связано с тем, кто им управляет.

РЕДАКТИРОВАТЬ:

Пробовал так же как @AlexK. предложил... Но я не могу, кажется, добраться до тех событий журнала, однако, если я смотрю вручную, чтобы регистрировать события, я вижу их.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set myLog = objFSO.OpenTextFile("temp.log",2, True)

strComputer = "."
'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Security)}!\\" & strComputer & "\root\cimv2")
'Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE LogFile='Microsoft-Windows-TerminalServices-LocalSessionManager' ")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent")
'Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'") 
myLog.WriteLine "."
For Each objEvent in colItems
    If objEvent.EventCode = 21 Then       
        myLog.WriteLine "************" 
        myLog.WriteLine "should be..." 
    End If
Next

msgbox("done")

0 ответов

Другие вопросы по тегам