powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить список системных событий с подробным их описанием?
4 сообщений из 4, страница 1 из 1
Как получить список системных событий с подробным их описанием?
    #33759297
Fluffy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, как написать программу просмотра событий (приложение, безопасность, система). Как получить источник, категорию, тип, ID и описание системного события? Помогите ,чем сможете
...
Рейтинг: 0 / 0
Как получить список системных событий с подробным их описанием?
    #33759380
a_s_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понял, а что вы понимаете под системным событием. К примеру движение мыши - событие, отлавливается хуками. Исключение - тоже событие, в общем случае обрабатывается SEH-ем. Обрабатывать все события от всего не имеет смысла. Что конкретно нужно сделать.
...
Рейтинг: 0 / 0
Как получить список системных событий с подробным их описанием?
    #33759414
Fluffy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в Windows XP есть просмотр событий: приложение безопасность система. Все это чудо можно увидеть: Мой компьютер\управление\просмотр событий.
...
Рейтинг: 0 / 0
Как получить список системных событий с подробным их описанием?
    #33759421
Fluffy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что у меня уже есть (Borland С++ Builder):

#include <vcl.h>
#pragma hdrstop
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include <stddef.h>
#include<iostream.h>
#include<fstream.h>
#include<ctype.h>
#include<conio.h>
#include<time.h>
#include <winsock2.h>
#include <windows.h>
#include <memory.h>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int stop=0;

void scan(char *comp);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

char* PrintTimeGenerated(EVENTLOGRECORD *pevlr)
{
FILETIME FileTime, LocalFileTime;
SYSTEMTIME SysTime;
__int64 lgTemp;
__int64 SecsTo1970 = 116444736000000000;

lgTemp = Int32x32To64(pevlr->TimeGenerated,10000000) + SecsTo1970;

FileTime.dwLowDateTime = (DWORD) lgTemp;
FileTime.dwHighDateTime = (DWORD)(lgTemp >> 32);

FileTimeToLocalFileTime(&FileTime, &LocalFileTime);
FileTimeToSystemTime(&LocalFileTime, &SysTime);
char bla[100]="";
char st[100];
ltoa(SysTime.wMonth,st,10);
strcat(bla,st); strcat(bla,"/");
ltoa(SysTime.wDay,st,10);
strcat(bla,st); strcat(bla,"/");
ltoa(SysTime.wYear,st,10);
strcat(bla,st); strcat(bla," ");
ltoa(SysTime.wHour,st,10);
strcat(bla,st); strcat(bla,":");
ltoa(SysTime.wMinute,st,10);
strcat(bla,st); strcat(bla,":");
ltoa(SysTime.wSecond,st,10);
strcat(bla,st); strcat(bla," ");

return bla;
}

BOOL
GetEventUserName(EVENTLOGRECORD *pelr, LPSTR pszUser)
{
PSID lpSid;
char szName[256];
char szDomain[256];
SID_NAME_USE snu;
DWORD dwLen;
DWORD cbName = 256;
DWORD cbDomain = 256;

// Point to the SID.
lpSid = (PSID)((LPBYTE) pelr + pelr->UserSidOffset);
if(pelr->UserSidLength==0){

strcpy( pszUser,"Access denied ");
}else

if (LookupAccountSid(NULL, lpSid, szName, &cbName, szDomain,
&cbDomain, &snu))
{// Return the user's name.
strcpy( pszUser, szName );
}
else
{
// Use the error status from LookupAccountSid.
return FALSE;
}
return TRUE;
}


void DisplayEntries(char vid[100])
{
HANDLE h;
EVENTLOGRECORD *pevlr;
BYTE bBuffer[32000];
DWORD dwRead, dwNeeded, cRecords, dwThisRecord = 0;

// Open the Application event log.

h = OpenEventLog(NULL, // use local computer
vid);//"Application"); // source name
if (h == NULL){
Form1->Memo1->Lines->Add("Could not open the Application event log.");
Form1->Memo1->Lines->Add(GetLastError());
}
pevlr = (EVENTLOGRECORD *) &bBuffer;

while (ReadEventLog(h, // event log handle
EVENTLOG_FORWARDS_READ | // reads forward
EVENTLOG_SEQUENTIAL_READ, // sequential read
0, // ignored for sequential reads
pevlr, // pointer to buffer
5000, // size of buffer
&dwRead, // number of bytes read
&dwNeeded)) // bytes in next record
{
while (dwRead > 0)
{
// Print the event identifier, type, and source name.
// The source name is just past the end of the
// formal structure.


char bla[100]="";
strcat(bla,"Event ID: ");
char st[256];
ltoa(pevlr->EventID,st,16);//strcat(bla,"0x");
strcat(bla,st);strcat(bla," ");

strcat(bla,PrintTimeGenerated(pevlr));
char user[100];
GetEventUserName(pevlr,user);

strcat(bla,user); strcat(bla," Type ");
ltoa(pevlr->EventType,st,10);
strcat(bla,st);strcat(bla," Cat ");
ltoa(pevlr->EventCategory,st,10);
strcat(bla,st); strcat(bla," ");
strcat(bla,(LPSTR) ((LPBYTE) pevlr +
sizeof(EVENTLOGRECORD)));
Form1->Memo1->Lines->Add(bla);
dwRead -= pevlr->Length;
pevlr = (EVENTLOGRECORD *)
((LPBYTE) pevlr + pevlr->Length);
}

pevlr = (EVENTLOGRECORD *) &bBuffer;
}

CloseEventLog(h);
}


void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Memo1->Lines->Clear();
char b1[100];
int c1=Form1->ListBox2->Items->Count;
for(int i=0;i<c1;i++)
{
if(Form1->ListBox2->Selected ==true)
{
strcpy(b1,Form1->ListBox2->Items->Strings.c_str());
}
}
DisplayEntries(b1);
}

//---------------------------------------------------------------------------




void __fastcall TForm1::Button3Click(TObject *Sender)
{
stop=1;
}
//---------------------------------------------------------------------------



к этому хотелось бы добавить описание событий. Думаю, что их можно как-то связать с идентификаторами событий. только вот как?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить список системных событий с подробным их описанием?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]