Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Хмм… Если ничего не меняли в коде, то ошибка вот здесь:
Код: Выделить весь код
		If .GetOwner(strUser, strDomain) <> 0 Then
Единственный вариант, который могу предположить — процесс завершается быстрее, нежели чем отведённый для опроса интервал — т.е., менее, чем за секунду.

Давайте попробуем так:
читать дальше »
Код: Выделить весь код
Option Explicit

Const ForAppending = 8
Const TristateTrue = -1
Const TemporaryFolder = 2


Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemEventSource
Dim objSWbemObjectEx

Dim objFSO
Dim objTS

Dim strPath

Dim strDomain
Dim strUser


strComputer = "."

Set objSWbemLocator     = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx  = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
	"SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
	"WHERE TargetInstance ISA 'Win32_Process'")

Set objFSO              = WScript.CreateObject("Scripting.FileSystemObject")

strPath = objFSO.BuildPath(objFSO.GetSpecialFolder(TemporaryFolder), "Application activity.log")

Do
	Set objSWbemObjectEx = objSWbemEventSource.NextEvent()
	
	Set objTS = objFSO.OpenTextFile(strPath, ForAppending, True, TristateTrue)
	
	With objSWbemObjectEx.TargetInstance
		On Error Resume Next
		If .GetOwner(strUser, strDomain) <> 0 Then
			If Err.Number <> 0 Then
				Err.Clear
				On Error Goto 0
				strDomain = "Unkhown"
				strUser   = "Unkhown"
			Else
				On Error Goto 0
			End If
		End If
		
		objTS.WriteLine _
			Now() & vbTab & _
			.Name & vbTab & _
			.ProcessID & vbTab & _
			.ParentProcessID & vbTab & _
			.ExecutablePath & vbTab & _
			.CommandLine & vbTab & _
			strDomain & "\" & strUser
	End With
	
	objTS.Close
	
	Set objTS = Nothing
Loop

Set objFSO             = Nothing
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:15, 02-10-2014 | #10