Доброго времени суток, форумчане
Давно читаю форум, многим помогали ответы в темах. Однако сейчас я вынужден задать вопрос.
По долгу рабочему столкнулся с задачей чтения журнала событий Windows 7 и Windows Server 2003-2008.
В целом проблем не возникло. Все разделы читаются полностью и без проблем, кроме раздела Security - при его чтении ответ пустой. Просто пустой.
Прошу вашей помощи, может посоветуете, как получить доступ к этому разделу.
Заранее спасибо, и привожу свой код
Код:
procedure TForm1.GetLogEvents;
const
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet: OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
Insertion : array of String;
I: integer;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NTLogEvent Where LogFile="Security"','WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
while oEnum.Next(1, FWbemObject, iValue) = 0 do begin
Form1.Memo1.Lines.Append(Format('Category %s',[String(FWbemObject.Category)]));
Form1.Memo1.Lines.Append(Format('Computer Name %s',[String(FWbemObject.ComputerName)]));
Form1.Memo1.Lines.Append(Format('EventCode %d',[Integer(FWbemObject.EventCode)]));
Form1.Memo1.Lines.Append(Format('RecordNumber %d',[Integer(FWbemObject.RecordNumber)]));
Form1.Memo1.Lines.Append(Format('Source Name %s',[String(FWbemObject.SourceName)]));
Memo1.Lines.Append('------------------------------------------');
FWbemObject:=Unassigned;
end;
end;