1. Init regedit.
bool InitLog( TCHAR *logName, TCHAR *sourceName, TCHAR *MessageDllName )
    {
// This number of categories for the event source.
DWORD dwCategoryNum = ; HKEY hk;
DWORD dwData, dwDisp;
TCHAR szBuf[MAX_PATH];
size_t cchSize = MAX_PATH; // Create the event source as a subkey of the log. HRESULT hr = _stprintf_s(szBuf, //
_T("SYSTEM\\CurrentControlSet\\Services\\EventLog\\%s\\%s"),
logName, sourceName); if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, szBuf,
, NULL, REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, &hk, &dwDisp))
{
return false ;
} // Set the name of the message file. if (RegSetValueEx(hk, // subkey handle
_T("EventMessageFile"), // value name
, // must be zero
REG_EXPAND_SZ, // value type
(LPBYTE) MessageDllName, // pointer to value data
(DWORD) (lstrlen(MessageDllName)+)*sizeof(TCHAR))) // data size
{
RegCloseKey(hk);
return false ;
} // Set the supported event types. dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
EVENTLOG_INFORMATION_TYPE; if (RegSetValueEx(hk, // subkey handle
_T("TypesSupported"), // value name
, // must be zero
REG_DWORD, // value type
(LPBYTE) &dwData, // pointer to value data
sizeof(DWORD))) // length of value data
{
RegCloseKey(hk);
return false ;
} // Set the category message file and number of categories. if (RegSetValueEx(hk, // subkey handle
_T("CategoryMessageFile"), // value name
, // must be zero
REG_EXPAND_SZ, // value type
(LPBYTE) MessageDllName, // pointer to value data
(DWORD) (lstrlen(MessageDllName)+)*sizeof(TCHAR))) // data size
{
RegCloseKey(hk);
return false ;
} if (RegSetValueEx(hk, // subkey handle
_T("CategoryCount"), // value name
, // must be zero
REG_DWORD, // value type
(LPBYTE) &dwCategoryNum, // pointer to value data
sizeof(DWORD))) // length of value data
{
RegCloseKey(hk);
return false ;
} RegCloseKey(hk); //设置按需要覆盖重写日志
HKEY hKey; hr = _stprintf_s(szBuf, //
_T("SYSTEM\\CurrentControlSet\\Services\\EventLog\\%s"),
logName); if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, szBuf, NULL, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
{
DWORD dwRetentionNum = ;
if (RegSetValueEx(hKey, // subkey handle
_T("Retention"), // value name
, // must be zero
REG_DWORD, // value type
(LPBYTE) &dwRetentionNum, // pointer to value data
sizeof(DWORD))) // length of value data
{
RegCloseKey(hKey);
return false ;
}
}
RegCloseKey(hKey); _tcscpy_s ( m_SourceName, sourceName ) ; return true ;
}

2. Insert log

    void Log_Event ( DWORD dwEventId, WORD wType, TCHAR *pStr )
{
TCHAR* pBuf[1] ;
pBuf[0] = pStr ; if ( !m_bInit )
{
_tcscpy_s ( m_SourceName, _T("FAIL") ) ;
dwEventId = 0 ;
} HANDLE hEventSource = RegisterEventSource ( NULL, m_SourceName ) ;
if ( hEventSource != NULL )
{
ReportEvent ( hEventSource, // handle of event source
wType, // event type
0, // event category
dwEventId, // event ID
NULL, // current user's SID
1, // strings in lpszStrings
0, // no bytes of raw data
(LPCTSTR*)pBuf, // array of error strings
NULL ) ; // no raw data DeregisterEventSource ( hEventSource ) ;
}
} http://msdn.microsoft.com/en-us/library/aa363680(v=vs.85).aspx

Event log c++ sample.的更多相关文章

  1. ora-28056 (Writing audit records to Windows Event Log failed)

    系统:windows xp oracle 版本 SQL> select * from v$version; BANNER ------------------------------------ ...

  2. windows 系统无法启动windows event log 服务

    windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...

  3. application pool can not write to event log

    https://stackoverflow.com/questions/9564420/the-source-was-not-found-but-some-or-all-event-logs-coul ...

  4. How to write to an event log by using Visual C#

    using System; using System.Diagnostics; namespace WriteToAnEventLog_csharp { /// Summary description ...

  5. AngularJS - $index, $event, $log

    原文: https://thinkster.io/egghead/index-event-log --------------------------------------------------- ...

  6. AWR发现TOP Event log file sequential read

    对客户DB进行巡检,发现TOP EVENT是LOG FILE Sequential read 等待事件说明 https://www.xuebuyuan.com/zh-hant/1743045.html ...

  7. KMS Event LOG

    The 12290 event entry gives a significant amount of information that can be used to figure out what ...

  8. 如何在 Windows Event Log 中查找系统重启的信息

    事件ID:12 事件ID 13: 事件ID 41: 事件ID 6008: 事件ID 1074:事件ID 1074: ========================================== ...

  9. Android 解读Event和Main Log

    1 Android P EventLogTags文件 Android P 9.0.0 所有EventLogTags文件List: system/bt/EventLogTags.logtags syst ...

随机推荐

  1. 从零开始的全栈工程师——js篇2.11(原型)

    原型 原型分析 1.每个 函数数据类型(普通函数,类)都有一个prototype属性 并且这个属性是一个对象数据类型2.每个Prototype上都有一个constructor属性 并且这个属性值是当前 ...

  2. Java集合框架—Map

    Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value)  putAll(Map<? extends K,? extends V& ...

  3. C#工程缺少IIS组件无法打开的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 同事使用VS打开一个C#工程,出现下面的错误: 这个工程是C#的桌面工程,跟IIS无关,去安装IIS太麻烦了.我想到一 ...

  4. java 多线程的经验总结

    什么是线程? 线程是操作系统所能运算调度的最小单元,包含于进程之中,作为进程的实际运作单位:线程与进程的区别,线程是进程的子集,一个进程可以有多个线程,每个线程并行执行不同的任务,不同的进程使用不同的 ...

  5. ubuntu16.04解决屏幕适应问题

    打开ubuntu登录进去后,输入: sudo  apt-get installopen-vm-tools sudo apt-get install open-vm* 然后重启(reboot),即可解决 ...

  6. OutOfMemoryError异常 和 StackOverflowError异常

      OutOfMemoryError异常  StackOverflowError异常  程序计数器 无 无 Java虚拟机栈 如果虚拟机栈可扩展,扩展时无法申请到足够内存 线程请求的栈深度大于虚拟机所 ...

  7. 爬虫系统Lucene分词

    思路:查询数据库中信息,查询出id和name把那么进行分词存入文件 package com.open1111.index; import java.io.IOException;import java ...

  8. java Vamei快速教程14 异常处理

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 程序很难做到完美,不免有各种各样的异常.比如程序本身有bug,比如程序打印时打印机 ...

  9. Head First HTML与CSS阅读笔记(二)

    上一篇Head First HTML与CSS阅读笔记(一)中总结了<Head First HTML与CSS>前9章的知识点,本篇则会将剩下的10~15章内容进行总结,具体如下所示. div ...

  10. 2018.1.30 PHP编程之验证码

    PHP编程之验证码 1.创建验证码函数 验证码函数输入通用函数,将函数放入global.func.php里. //创建一个随机码 for($ i=0;$i<4;$i++){ $_nmsg. = ...