Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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?

Public Function SaveInLog(sLogString As String, sProcess As String) As Boolean
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, _
                        ;DOMAIN_ALIAS_RID_ADMINS, _
                        ;DOMAIN_ALIAS_RID_USERS, _
                        ;DOMAIN_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-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 27.11.06 01:25
Мне лень, а остальные не знают :P

Ответить

Номер ответа: 4
Автор ответа:
 Vilor



Вопросов: 5
Ответов: 28
 Профиль | | #4 Добавлено: 28.11.06 13:25
Мне лень
- спасибо за честность
а остальные не знают :P

и они с этим утверждением согласны?

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 29.11.06 05:30
Молчат, значит, согласны

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам