Страница: 1 |
Страница: 1 |
Вопрос: Использование API для записи события WinXP
Добавлено: 21.11.06 19:27
Автор вопроса: Vilor
1. Как записать собственное описание события при использовании API-функции ReportEvent.
Например при выполнении:
hEventLog = OpenEventLog(vbNullString, "VBA Project for change EventLog.")
ReportEvent hEventLog, &H4, 1, 111, ByVal 0&, 1, 0, "VBA Project ReportEvent", ByVal 0&
в событиях симстемы в категории приложение текст: "Не найдено описание для события с кодом ( 111 ) в источнике ( VBA Project for change EventLog. ) ........... и т.д."
2. Что при использовании ReportEvent использовать в качестве входной перменной lpUserSid для записи в лог имени пользователя. Попытки использовать AllocateAndInitializeSid не увенчались успехом. Если кто может помочь - поделитесь примером, please...
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #1
Добавлено: 26.11.06 18:08
Вот такая функия записывает одно и тоже ссобщение в журнал событий, от имени группы пользователей, имеющихся на компе. А как записать от конкретного пользователя - владельца процесса Excel?
On Error GoTo Err01:
Dim hEventLog As Long, Ret As Long
hEventLog = OpenEventLog(sLogString, sProcess)
Dim hProcessToken As Long
Dim BufferSize As Long
Dim psidAdmin As Long
Dim lResult As Long
Dim X As Integer
Dim tpTokens As TOKEN_GROUPS
Dim tpSidAuth As SID_IDENTIFIER_AUTHORITY
Dim lSID As Long
If Not OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, True, hProcessToken) Then
Call OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, hProcessToken)
End If
If hProcessToken Then
Call GetTokenInformation(hProcessToken, ByVal TokenGroups, 0, 0, BufferSize) ' Determine required buffer size
If BufferSize Then
ReDim InfoBuffer((BufferSize \ 4) - 1) As Long
lResult = GetTokenInformation(hProcessToken, ByVal TokenGroups, InfoBuffer(0), BufferSize, BufferSize)
If lResult <> 1 Then Exit Function
Call RtlMoveMemory(tpTokens, InfoBuffer(0), Len(tpTokens))
lResult = AllocateAndInitializeSid(tpSidAuth, 2, _
SECURITY_BUILTIN_DOMAIN_RID, _
 OMAIN_ALIAS_RID_ADMINS, _
 OMAIN_ALIAS_RID_USERS, _
 OMAIN_ALIAS_RID_GUESTS, _
SECURITY_LOCAL_SYSTEM_RID, _
0, _
0, _
0, _
psidAdmin)
If lResult <> 1 Then Exit Function
If IsValidSid(psidAdmin) Then
For X = 0 To tpTokens.GroupCount
If IsValidSid(tpTokens.Groups(X).Sid) Then
lSID = tpTokens.Groups(X).Sid
ReportEvent hEventLog, EVENTLOG_SUCCESS, 1, 111, ByVal lSID, 1, 0, _
" " & vbCrLf & "Запись сообщения от имани пользователя.", ByVal 0&
If EqualSid(ByVal tpTokens.Groups(X).Sid, ByVal psidAdmin) Then
lSID = tpTokens.Groups(X).Sid
Exit For
End If
End If
Next
End If
If psidAdmin Then Call FreeSid(psidAdmin)
End If
Call CloseHandle(hProcessToken)
End If
CloseEventLog hEventLog
SaveInLog = True
Exit Function
Err01:
Debug.Print "Error Function SaveInLog", Err.Number, Err.Description
End Function
Номер ответа: 2
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #2
Добавлено: 26.11.06 22:24
АУ-У... Мне никто не сможет помочь? А я так надеялся на помощь профессионалов .
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 27.11.06 01:25
Мне лень, а остальные не знают :P
Номер ответа: 4
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #4
Добавлено: 28.11.06 13:25
и они с этим утверждением согласны?
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 29.11.06 05:30
Молчат, значит, согласны