Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2014, 11:26
susanin95@gmail.com susanin95@gmail.com вне форума
Прохожий
 
Регистрация: 15.05.2014
Сообщения: 1
Версия Delphi: Delphi xe3
Репутация: 10
По умолчанию не получается чтение журнала Security.

Не могу справится с проблемой, а именно - нормально вывести путь процесса. То выдает обрезанную строчку, то иероглифами, а то и вовсе пустую.
Как вывести нормально?
win7, delphi xe3;
Вот код:
Код:
(uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.DateUtils;)

--------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
type
TEventLogRecord = record
Length: dword;
Reserved: dword;
RecordNumber: dword;
TimeGenerated: dword;
TimeWritten:dword;
EventID: dword;
EventType: word;
NumStrings: word;
EventCategory: word;
ReservedFlags: word;
ClosingRecordNumber: dword;
StringOffset: dword;
UserSidLength: dword;
UserSidOffset: dword;
DataLength: dword;
DataOffset: dword;
end;
type
TEventData=record
SubjectUserSid:dword;
SubjectUserName:dword;
SubjectDomainName:dword;
SubjectLogonId:dword;
Status:dword;
ProcessId:dword;
ProcessName:dword;
end;
PTEventLogRecord = ^TEventLogRecord;
var
h, dwread, dwneeded: dword;
p, src:pointer;
b:PTEventLogRecord;
s,proba:string;
begin
memo1.Clear;
h:=OpenEventLog(nil, PChar('Security'));
if h<>INVALID_HANDLE_VALUE then
begin
p:=AllocMem(1024*32);
src:=p;
while ReadEventLog(h, 4 or 1, 0, p, 1024*32, dwread, dwneeded) do
begin
while dwread>0 do
begin
begin
b:=p;
s:=Utf8ToAnsi('record number: '+IntToStr(b^.RecordNumber)+#13#10
+ 'source: '+PChar(integer(b)+sizeof(TEventLogRecord))+#13#10
+ 'event id: ' + IntToHex(b^.EventID,4) +#13#10
+ 'RecordNumber: '+IntToStr(b^.RecordNumber) +#13#10
+ 'EventID: '+IntToStr(b^.EventID) +#13#10
+ 'DataOffset: '+IntToStr(b^.DataOffset) +#13#10
+'datatime :'+ datetimetostr(UnixToDateTime(b^.TimeGenerated)+StrToTime('4:00'))+#13#10
+'SubjectUserSid :'+PChar(PSID(DWORD(b) + DWORD(TEventLogrecord(b^).UserSIDOffset)))+#13#10
+'Proba1 :'+WideCharToString(PSID(DWORD(b) + DWORD(TEventLogRecord(b^).EventID)))+#13#10     //вот это я пытаюсь вывести путь приложения, но как не знаю
+'Proba2 :'+WideCharToString(PSID(DWORD(b) + DWORD(TEventLogRecord(b^).EventType)))+#13#10  //метод научного тыка
+'Proba3 :'+WideCharToString(PSID(DWORD(b) + DWORD(TEventLogRecord(b^).EventCategory)))+#13#10); //так сказать
Memo1.Lines.Add(s);
end;
dwread:=dwread-b^.Length;
p:=pointer(integer(p)+b^.Length);
end;
p:=src;
ZeroMemory(p, 1024*32);
end;
FreeMem(src);
CloseEventLog(h);
end;
end;

end.

Последний раз редактировалось susanin95@gmail.com, 20.06.2014 в 16:52.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter