Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
1

Журнал событий

19.10.2012, 13:42. Просмотров 3376. Ответов 24
Метки нет (Все метки)

Здраствуйте!!
Запара втом что нужно написать програму з выкорыстанням функцыи:
OpenBackupEventLog function -яка видкрывае журнал событий!
GetNumberOfEventLogRecords - Повертає килькить записив в зазначеному журнали событий.
все це нужно зделать в Visul Form C++
з першою все ок:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int  Open()
{
    
HANDLE hEventLog;
    #define UNLEN 256
    char  chFileName[256];
    GetDlgItemText(hWnd,ID_EDIT1,(LPTSTR)chFileName,UNLEN);
          if (strlen(chFileName)==0)
        {
        MessageBox(hWnd,L"Ви не ввели адресу об'єкта",L"ПОМИЛКА!",MB_OK|MB_ICONERROR);
        }
    else 
    {
           hEventLog = NULL;
    hEventLog = OpenBackupEventLog(NULL,(LPTSTR)chFileName);//L"E:\Win8.evtx"
 
    if (GetFileAttributesW((LPTSTR)chFileName) == INVALID_FILE_ATTRIBUTES)
    {
 
         MessageBox(hWnd,L"Файл незнайдено!",L"ПОМИЛКА!",MB_OK|MB_ICONERROR) ;
     }
    if (NULL == hEventLog)
    {
     MessageBox(hWnd,L"Відкриття файлу не вдалося ",L"ПОМИЛКА!",MB_OK|MB_ICONERROR);
            return 0;   
            
    }
    
    else
     MessageBox(hWnd,L"Відкриття журналу прошло успішно",L"Відкриття Успішне!",MB_OK) ;
    
    return 0;
А ось друга никак нехочет роботать:
NumberOfRecords
Синтаксис
C + +

BOOL GetNumberOfEventLogRecords (
_In_ HANDLE hEventLog,
_Out_ PDWORD NumberOfRecords
);
NumberOfRecords [вихід] -Покажчик на зминну, яка отримує число записив в зазначеному журнали собітий.
Помогите кто знает
код С++
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int  NumberOfRecords()
{
    PDWORD NumberOfRecords = 0;
    BOOL WINAPI GetNumberOfEventLogRecords(HANDLE hEventLog, // дескриптор файлу
        PDWORD NumberOfRecords); //Покажчик на змінну, яка отримує число записів в зазначеному журналі подій.
     if(NumberOfRecords = 0)
    {
        MessageBox(hWnd,L"ERROR",L"ПОМИЛКА!",MB_OK|MB_ICONERROR);
     }
     if(NumberOfRecords > 0)
     {
         MessageBox(hWnd,L"ГОТОВО",L"!",MB_OK);
        SetWindowText(hTextEdit5,(LPTSTR)NumberOfRecords);
}
    
        
 
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 13:42
Ответы с готовыми решениями:

Журнал Событий Win32API: OpenBackupEventLog function
Здраствуйте!! Запара втом что нужно написать програму з выкорыстанням функцыи: OpenBackupEventLog...

Журнал событий
Всем привет, пытаюсь сделать просмотр журналов событий Windows 8 на си++ в QT. Подготовил код,...

Журнал событий?
надо создать что-то типа журнала событий. проблема в том чтобы вести хронологию. замучался с...

Журнал событий
Здравствуйте, коллеги! Очень прошу помочь! Как при помощи PowerShell вывести первые 5 событий из...

24
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2012, 14:55 2
Цитата Сообщение от armagedonks Посмотреть сообщение
BOOL WINAPI GetNumberOfEventLogRecords(HANDLE hEventLog, // дескриптор файлу
* * * * PDWORD NumberOfRecords); //Покажчик на змінну, яка отримує число записів в
- сразу же - ну что за ужас : записан заголовок функции и всё, где передача параметров внутрь функции??!
По логике сначала вызвали
Цитата Сообщение от armagedonks Посмотреть сообщение
hEventLog = OpenBackupEventLog(NULL,(LPTSTR)chFileName);
Отлично почему далее в коде пишем
BOOL WINAPI GetNumberOfEventLogRecords(HANDLE hEventLog, PDWORD NumberOfRecords); ну кто типы параметров при вызове пишет
Вот верный вызов функции
C
1
2
3
DWORD NumberOfRecords = 0;
HANDLE hEventLog = OpenBackupEventLog(NULL,(LPTSTR)chFileName);
GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords);
1
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
19.10.2012, 15:15  [ТС] 3
Прописал всьо так
сразу же после открыття:
C++ (Qt)
1
2
3
4
5
6
7
8
9
DWORD NumberOfRecords = 0;
    if(!GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords))
    {
    MessageBox(hWnd,L"ERROR",L"ПОМИЛКА!",MB_OK|MB_ICONERROR);
    }
    else
    {
    SendMessage(hTextEdit5,EM_REPLACESEL,0,(LPARAM) &NumberOfRecords);
    };
и ничево невыводит......
0
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2012, 15:22 4
Цитата Сообщение от armagedonks Посмотреть сообщение
и ничево невыводит......
- потому что у тебя всё на функциях и видимо hEventLog не дотягиваешь до своей функции int NumberOfRecords() + ещё название некорректное т.к оно совпадает с именем переменной DWORD NumberOfRecords = 0; - дай своёй функции имя int getNumberOfRecords(), короче скомпилируй в консоли этот код и посмотри результат
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <windows.h>
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    DWORD NumberOfRecords = 0;
    HANDLE hEventLog = OpenBackupEventLog(NULL,"system");
    if(!hEventLog)
        MessageBox(hWnd,"OpenBackupEventLog",NULL,MB_OK|MB_ICONERROR);
    else
    if(!GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords))
        MessageBox(hWnd,"GetNumberOfEventLogRecords",NULL,MB_OK|MB_ICONERROR);
    else
    {
        printf("HANDLE hEventLog      : 0x%p\n",hEventLog);
        printf("DWORD NumberOfRecords : %u\n"  ,NumberOfRecords);
    }
    return 0;
}
1
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
19.10.2012, 15:39  [ТС] 5
Неработает:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <windows.h>
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    DWORD NumberOfRecords = 0;
    HANDLE hEventLog = OpenBackupEventLog(NULL,L"system");
    if(!hEventLog)
        MessageBox(hWnd,L"OpenBackupEventLog",NULL,MB_OK|MB_ICONERROR);
    else
    if(!GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords))
       MessageBox(hWnd,L"GetNumberOfEventLogRecords",NULL,MB_OK|MB_ICONERROR);
    else
    {
        printf("HANDLE hEventLog      : 0x%p\n",hEventLog);
        printf("DWORD NumberOfRecords : %u\n"  ,NumberOfRecords);
    }
    
    return 0;
    
}
Выбивает ошыбку :
MessageBox(hWnd,L"OpenBackupEventLog",NULL,MB_OK|MB_ICONERROR);
0
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2012, 21:48 6
armagedonks, вот этот код однозначно отработает на ХР-юше
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <windows.h>
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    DWORD NumberOfRecords = 0;
    HANDLE hEventLog = OpenBackupEventLog(NULL,"C:\\WINDOWS\\system32\\config\\SysEvent.Evt");
    if(!hEventLog)
        MessageBox(hWnd,"OpenBackupEventLog",NULL,MB_OK|MB_ICONERROR);
    else
    if(!GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords))
        MessageBox(hWnd,"GetNumberOfEventLogRecords",NULL,MB_OK|MB_ICONERROR);
    else
    {
        printf("HANDLE hEventLog      : 0x%p\n",hEventLog);
        printf("DWORD NumberOfRecords : %u\n"  ,NumberOfRecords);
    }
    return 0;
}
1
Миниатюры
Журнал событий   Журнал событий  
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2012, 21:56 7
Небольшой адишн armagedonks, настоятельно рекомендую тебе пока забыть об использовании юникода в своих проектах!Смотри, я прописал уже 10 с хвостиком лет, и до сих пор делаю юникодные проекты лишь по нужде! У тебя же что ни проект то юникодный
Цитата Сообщение от armagedonks Посмотреть сообщение
OpenBackupEventLog(NULL,L"system");
Я не говорю, что юниокд это зло, нет напротив, но для твоего уровня юникод пока зло(прошу не воспринимать мои слова как наезд, издёвку и не принимать на свой счёт. Объективно - с юникодом ещё надо уметь работать)
Ниже безюникодный проект в 2008-й версии, в котором живут char, LPTSTR и другие привычные глазу начинающего типы и функции. Думаю в этот раз у тебя всё получится

Не по теме:

PS:Головний менеджер Мікрософту одного ранку вирішив, що від теперь задля розробок під Вісту та 7-мку дефалтною кодировкою в MSVS маэ бути юнікод - тому з того самого ранку, щоб робити проекти з вузькою ASCII кодировкою потрібно перстановлювати кодировку:) Подивись ось тут int->LPCTSTR && char->LPCTSTR як це робти

1
Миниатюры
Журнал событий  
Вложения
Тип файла: rar EventJournal_proj.rar (5.6 Кб, 14 просмотров)
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
20.10.2012, 03:01  [ТС] 8
спасибо огромное!! у меня просто стоит OS windows 8 ,MS Visual Studio 12
очень прошу перевирте етот код чи он роботает мне очень нужно зарания благодарен!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int ReadEventLog()
{
    DWORD dwRead = 0, dwNeeded;
 
    
 
     ReadEventLog(hEventLog, // дескриптор журнала событий
 EVENTLOG_FORWARDS_READ | // читання вперед
 EVENTLOG_SEQUENTIAL_READ, // Послідовне читання
 0, // ігнорується для послідовного читання
 pevlr, // покажчик на буфер
 1024, // Розмір буфера
 &dwRead, // кількість прочитаних байтів
 &dwNeeded); // байт в наступному записі
    
 if (dwRead > 0) 
 {
 
      
     MessageBox(hWnd,L"Читання числа входів вдалося!",L"       Успішно  ",MB_OK) ;
         SendMessage(hTextEdit5,EM_REPLACESEL,0,(DWORD)&dwNeeded);
        SetWindowText(hEdit2,(LPCTSTR)&dwRead);
            
 }  
 if (dwRead = 0) 
 {
         
        MessageBox(hWnd,L"Читання числа входів невдалося!",L"       ПОМИЛКА!  ",MB_OK|MB_ICONERROR) ;
            
 } 
    
 
  return 0;
}
Только я непойму что толком нужно вывадить в завданни написано: Читання цилого числа входив з вказаного файлу реестрации событий
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 11:22 9
Цитата Сообщение от armagedonks Посмотреть сообщение
Только я непойму что толком нужно вывадить в завданни написано: Читання цилого числа входив з вказаного файлу реестрации событий
armagedonks, просто прочти MSDN по поводу того что же возвращает ReadEventLog
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Там написано
Reads the specified number of entries from the specified event log. The function can be used to read log entries in chronological or reverse chronological order.
(ключевое красным) Так вот сюда
BOOL ReadEventLog(
_In_ HANDLE hEventLog,
_In_ DWORD dwReadFlags,
_In_ DWORD dwRecordOffset,
_Out_ LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_ DWORD *pnBytesRead,
_Out_ DWORD *pnMinNumberOfBytesNeeded
);
Функция возвратит строковое содержимое записи. Подсказка что там будет на скриншоте

Не по теме:

Отдельное пожелание : Всегда надо читать справки по функциям - тогда много вопросов будут отпадать сами, а понимание кода будет лучше.

1
Миниатюры
Журнал событий  
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
20.10.2012, 11:47  [ТС] 10
а вы незнаете как ево вывести?(содержимое записи)

и как ищо можна вывадить?(способы) (кодировку проекта я поминял огромное спасибо!!)
но выводит сымволы ....(Ёhv)
вывожжы через
SetWindowText(hEdit4,(LPTSTR)hEventLog); //(LPTSTR)- без нево немагу так як видае ошыбку
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 11:55 11
Цитата Сообщение от armagedonks Посмотреть сообщение
но выводит сымволы ....(Ёhv)
почитай об MultyByteToWideChar.

Цитата Сообщение от armagedonks Посмотреть сообщение
вывожжы через
SetWindowText(hEdit4,(LPTSTR)hEventLog); //(LPTSTR)- без нево немагу так як видае ошыбку
- это вообще ужас!Пойми hEventLog тоже самое что и HWND (т.е просто номер потока/окна или чего-то там в системе не более) неужели не видел как я его вывожу
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
printf("HANDLE hEventLog * * *: 0x%p\n",hEventLog);
Короче hEventLog выводи как 8-ричное число
1
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
20.10.2012, 12:44  [ТС] 12
Я канешно извиняюсь но я новичок в етом деле:
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
printf("HANDLE hEventLog * * *: 0x%p\n",hEventLog);
я немагу так вывести ....я не в консольном режыми роботаю а в Windows Form Aplication
как мне вывест в Едит например?
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 16:25 13
Цитата Сообщение от armagedonks Посмотреть сообщение
я немагу так вывести ....я не в консольном режыми роботаю а в Windows Form Aplication
как мне вывест в Едит например?
- преобразуй в массв чаров и запуль в Edit
C++
1
2
3
char sBuf[32] = {0};
sprintf(sBuf,"0x%p",hEventLog);
SetWindowText(hTextEdit5,sBuf);
1
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
20.10.2012, 16:52  [ТС] 14
Юра з выводом я розобрался:
TCHAR s2[50] = {0};
wsprintf(s2, "%dec", NumberOfRecords);
SetWindowText(hEdit3,s2);
такий метод мне лутше подходит так як sprintf Выводить HEX.

А ось з ReadEventLog застряг:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int ReadEventLog()
{
    DWORD dwRead = 0, dwNeeded;
    DWORD dwThisRecord;
    
      ReadEventLog(hEventLog, // дескриптор журнала событий
 EVENTLOG_FORWARDS_READ | // читання вперед
 EVENTLOG_SEQUENTIAL_READ, // Послідовне читання
 0, // ігнорується для послідовного читання
 pevlr, // покажчик на буфер
 1024, // Розмір буфера
 &dwRead, // кількість прочитаних байтів
 &dwNeeded); // байт в наступному записі
    
 if  (dwRead > 0) 
 {
     GetOldestEventLogRecord(hEventLog,&dwThisRecord);
     MessageBox(hWnd,"Прошлo успішно","Відкриття Успішне!",MB_OK) ;
     TCHAR s3[50] = {0};    
     TCHAR s4[50] = {0};
 
 
     wsprintf(s3,"%02d   Event ID: %i", dwThisRecord++, (short)pevlr->EventID);
    SetWindowText(hTextEdit5,s3);
 
     wsprintf(s4,"EventType: %d Source: %s\n", pevlr->EventType, (LPSTR) ((LPBYTE) pevlr + sizeof(EVENTLOGRECORD)));
     SetWindowText(hTextEdit5,s4);
     
 }  
 
    
 
  return 0;
}
Ось приклад откуда я делаю цю функцию :http://msdn.microsoft.com/en-us/library/windows/desktop/aa363677(v=vs.85).aspx

Никак нерозберусь как мне вывести содержымое...подскажыте что я неправильно зделал
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 18:08 15
Цитата Сообщение от armagedonks Посмотреть сообщение
Никак нерозберусь как мне вывести содержымое...подскажыте что я неправильно зделал
- обращаемся к справке http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
lpBuffer [out]
An application-allocated buffer that will receive one or more EVENTLOGRECORD structures. This parameter cannot be NULL, even if the nNumberOfBytesToRead parameter is zero.
- т.е это поинтер на структуру либо массив структур EVENTLOGRECORD, где он в твоём коде?Его нет, потому как вот эту справку даже не читал http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx, а ведь линк на неё идёт вконце справки о ReadEventLog
Вобщем вот проект, дорабатывай сам, принцип чтения в коде показан...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <time.h>
#include <stdio.h>
#include <windows.h>
 
tm * ConvDWORD2Time(DWORD dwTime);
void ShowRECORD(PVOID lpBuffer, DWORD *dwPos);
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    DWORD dwCurentRecord  = 0;
    DWORD NumberOfRecords = 0;
    PVOID lpBuffer = NULL;
    DWORD dwRead   = 0;
    DWORD dwNeed   = 0;
    DWORD dwSize   = sizeof(EVENTLOGRECORD);
    DWORD dwPos    = 0;
    system("chcp 1251");
    HANDLE hEventLog = OpenBackupEventLog(NULL,"C:\\WINDOWS\\system32\\config\\SysEvent.Evt");
    if(!hEventLog)
        MessageBox(hWnd,"OpenBackupEventLog",NULL,MB_OK|MB_ICONERROR);
    else
    if(!GetNumberOfEventLogRecords(hEventLog, &NumberOfRecords))
        MessageBox(hWnd,"GetNumberOfEventLogRecords",NULL,MB_OK|MB_ICONERROR);
    else
    {
        printf("HANDLE hEventLog      : 0x%p\n",hEventLog);
        printf("DWORD NumberOfRecords : %u\n"  ,NumberOfRecords);
        //Память под массив структур
        lpBuffer = malloc(NumberOfRecords*dwSize*8);
        if
        (
            !ReadEventLog
            (
                hEventLog,
                EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,
                0,
                lpBuffer,
                NumberOfRecords*dwSize,
                &dwRead,
                &dwNeed
            )
        )
            MessageBox(hWnd,"ReadEventLog",NULL,MB_OK|MB_ICONERROR);
        else
        for
        (dwPos = 0; 0 < dwRead; dwRead = dwRead - dwPos)
        {
            ShowRECORD(((char *)lpBuffer + dwPos),&dwPos);
            system("pause");
        }
        free(lpBuffer);
    }
    if(hEventLog)
        CloseHandle(hEventLog);
    system("pause");
    return 0;
}
 
tm * ConvDWORD2Time(DWORD dwTime)
{
    time_t t = (time_t)dwTime;
    return localtime(&t);
}
 
void ShowRECORD(PVOID lpBuffer, DWORD *dwPos)
{
 
    tm * ptm;
    EVENTLOGRECORD pRECORD = *(EVENTLOGRECORD *)lpBuffer;
    printf("Length       : %d\n",pRECORD.Length);
    printf("RecordNumber : %d\n",pRECORD.RecordNumber);
    printf("TimeGenerated: %s",asctime(ConvDWORD2Time(pRECORD.TimeGenerated)));
    printf("TimeWritten  : %s",asctime(ConvDWORD2Time(pRECORD.TimeWritten)));
    printf("EventID      : %d\n",pRECORD.EventID);
    printf("EventType    : ");
    switch(pRECORD.EventType)
    {
    case EVENTLOG_ERROR_TYPE:
        printf("Error event\n");
        break;
    case EVENTLOG_AUDIT_FAILURE:
        printf("Failure Audit event\n");
        break;
    case EVENTLOG_AUDIT_SUCCESS:
        printf("Success Audit event\n");
        break;
    case EVENTLOG_INFORMATION_TYPE:
        printf("Information event\n");
        break;
    case EVENTLOG_WARNING_TYPE:
        printf("Warning event\n");
        break;
    }
    printf("NumStrings   : %d\n",pRECORD.NumStrings);
    printf("StringOffset : %d\n",pRECORD.StringOffset);
    printf("UserSidLength: %d\n",pRECORD.UserSidLength);
    printf("UserSidOffset: %d\n",pRECORD.UserSidOffset);
    printf("DataLength   : %d\n",pRECORD.DataLength);
    printf("DataOffset   : %d\n",pRECORD.DataOffset);
    printf("DataEntry    : %s\n",(char *)lpBuffer + pRECORD.StringOffset);
    printf("\n");
 
    (*dwPos) = pRECORD.Length;
}
1
Миниатюры
Журнал событий  
-=ЮрА=-
20.10.2012, 18:10
  #16

Не по теме:

PS: armagedonks, убери юникод из своего проекта, он только тебя путает!

0
armagedonks
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 22
20.10.2012, 19:01  [ТС] 17
Спасибо...но вибивает ошыбку
здесь:
C
1
return localtime(&t);
Ошыбка:Ошибка 1 error C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. e:\1\consoleapplication1\consoleapplication1\consoleapplication1.cpp 69
скиньте проект может так попробую....

А що до справке я сматрел и в функции опен оголлошував массив структур EVENTLOGRECORD просто вам нескинул...
ВСеодно спасибо!! Огромное щас буду пробывать

Добавлено через 16 минут
Юра что ето?
system("chcp 1251");
Вибивает таку ошыбку:
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\сан\desktop\12lr\12lr\12lr.cpp 27
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 22:44 18
Цитата Сообщение от armagedonks Посмотреть сообщение
Юра что ето?
system("chcp 1251");
Вибивает таку ошыбку:
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\сан\desktop\12lr\12lr\12lr.cpp 27
- это руссификация для старых версий MSVS, замени на setlocale(LC_ALL,"RUS")

Цитата Сообщение от armagedonks Посмотреть сообщение
his function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
- тебе компилятор и предложил 2 варианта
1-й использование Consider using localtime_s instead. вместо localtime
2-й использовать ключ _CRT_SECURE_NO_WARNINGS чтобы прекратить бестолковую ругань компилятора на использование localtime.
1
MrCold
865 / 763 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
21.10.2012, 06:43 19
Цитата Сообщение от armagedonks Посмотреть сообщение
яка видкрывае журнал событий!
Повертає килькить записив в зазначеному журнали событий.
в Visul Form C++
На форме TextBox и кнопка
Имя журнала событий , путь к нему, укажите свои .
Если доступ запрещен, запускайте приложение от имени администратора .

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    using namespace System::IO;
    using namespace System::Diagnostics;
////////////////////////////////////////////////////////////
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
             {
 
            String ^ filepath = L"C:\\Windows\\System32\\winevt\\Logs\\Security.evtx";
            String ^ logname = "Security";
 
           if ( ! File::Exists( filepath))
                    MessageBox::Show(
                                      L"File does not exist.\n Файл " + 
                                      filepath + "  не найден", L"Ошибка",
                                      MessageBoxButtons::OK, MessageBoxIcon::Error 
                                     );
    else
    {
          EventLog ^myLog = gcnew EventLog();
                   myLog->Log = logname;  
 
     try{
            EventLogEntryCollection^ myEventLogEntryCollection = myLog->Entries;
      
            textBox1->Text = "Журнал событий " +
                     myLog->Log + " содержит записей  :  " +  myEventLogEntryCollection->Count.ToString();
     }
     catch ( Exception^ e ) 
     {
            MessageBox::Show( "Exception : " + e->Message );
      }
 
    }
 
             }
Добавлено через 43 минуты

Не по теме:

-=ЮрА=-, подскажите, почему
запускаю ваши примеры, все работает без ошибок.
Но функция OpenBackupEventLog все время возвращает ноль ?
Что не так делаю ? Спасибо.

1
-=ЮрА=-
Заблокирован
Автор FAQ
21.10.2012, 12:46 20
Цитата Сообщение от MrCold Посмотреть сообщение
-=ЮрА=-, подскажите, почему
запускаю ваши примеры, все работает без ошибок.
Но функция OpenBackupEventLog все время возвращает ноль ?
Что не так делаю ? Спасибо.
- функция может неотрабатывать по многим причинам, к примеру нет такого журнала

Цитата Сообщение от MrCold Посмотреть сообщение
C:\\Windows\\System32\\winevt\\Logs\\Security.evtx
до банального зашли под ограниченной учётной записью.
Return value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Всё это фиксится с помощью FormatMessage обрабатыающем ошибку GetLastError.
На моём домашнем ПК OpenBackupEventLog возращает вполне корректный хендл(см скрин), так что определить что же не так на другом ПК, даже не видя код ошибки я просто не в силах...
2
Миниатюры
Журнал событий  
21.10.2012, 12:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 12:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Журнал событий
Здравствуйте, буду делать авторизация пользователей на основе сессий на PHP+SQL. Необходимо также...

Журнал событий
возможно ли узнать когда открывалась та или иная папка или документ на компьютере, например можно...

Журнал событий
Есть объект. И есть 30 сигналов. У каждого сигнала есть своё одно состояние (либо авария(красный...

Журнал событий
Доброго времени суток уважаемые форумчане! Требуется создать журнал событий в MS Excel 2007 с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.