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. 2013 QConf上海软件开发大会总结

    带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会.会议以主题的形式按分会场召开,我主要选择知名网站案例分析.大数据处理技术.高效能团队建设和金融系统架构与设计四个主题内容.三天会 ...

  2. 跨平台移动开发phonegap/cordova 3.3全系列教程-app启动画面

    1.app启动画面设计 用photoshop设计启动画面,图片分辨率为720*1280 保存的文件名为splash.png 将splash.png复制到res\drawable,如图 PS:要先添加闪 ...

  3. Centos内核调优参考

    net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_keepalive_time = 600 net.i ...

  4. Azure School,让系统化学习回归一站式的简单体验

    承认吧,「终身制学习」已经成为一个不可抵挡的趋势.不管你从事什么行业,几乎已经没有什么可以一直吃老本就能搞定的事情,总有各种新的技术和概念等着你去学.至于发展速度飞快的IT 技术,不断的学习更是贯彻始 ...

  5. svn项目权限控制

    [groups] g_manager = zhangsan g_php = lisi g_test = wangwu [/] @g_manager = rw [project:/] @g_manage ...

  6. LeetCode Missing Number (简单题)

    题意: 给一个含有n个整数的数组,数组中的元素应该是0-n.现在缺了其中某1个,找出缺少的那个整数? 思路: 0-n的总和是可以直接计算的,而缺少的那个就是sum减去数组的和. int missing ...

  7. IOS NSBundle使用(访问文件夹)

    NSBundle的相关信息 1.一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹 2.利用mainBundle就可以访问软件资源包中的任何资源 3.模拟器应用程序的安装路径: ...

  8. 用virtualenv构建一个新的python环境,这个新的环境在这个创建的文件夹下

    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143271210830032 ...

  9. GBDT回归的原理及Python实现

    一.原理篇 1.1 温故知新回归树是GBDT的基础,之前的一篇文章曾经讲过回归树的原理和实现.链接如下: 回归树的原理及Python实现 1.2 预测年龄仍然以预测同事年龄来举例,从<回归树&g ...

  10. 查询Linux下已安装软件的版本

    #rpm -qa | grep mysql