Простой скрипт для регистрации подключений к удаленному рабочему столу
Я пытаюсь сделать простой небольшой скрипт в 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")