Показать сообщение отдельно
  #4  
Старый 29.11.2013, 01:42
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Lord_Vlad
Код:
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;
Проверил этот код у себя на Windows7 - прекрасно всё работает без каких либо изменений.
Но конечно же только с правами администратора - без прав администратора возвращает пустой ответ - похоже как раз твой случай.
Ответить с цитированием