如何读写WINDOWS2000的日志
2006-07-19 11:37:24 来源:WEB开发网核心提示:本文示例源代码或素材下载 一些大型应用程序会把他们的一些事件写到日志里面去,比如sql server,norton,iis等.我google了一下,网上关于这方面的资料并不是很完整,于是整理加工了一下. 下面是我看msdn,用google及自己摸索得到的一点体会,共享.一.注册事件源.(需以administra
本文示例源代码或素材下载
一些大型应用程序会把他们的一些事件写到日志里面去,比如sql server,norton,iis等.我google了一下,网上关于这方面的资料并不是很完整,于是整理加工了一下. 下面是我看msdn,用google及自己摸索得到的一点体会,共享.
一.注册事件源.(需以administrator登陆本机才行)
你需要为你的应用程序注册一个事件源,以表明那些是属于你应用程序的事件.
HKEY hk;
ULONG disposition, allowed;
char szName[256];
strcpy(szName,"SYSTEM\\CurrentControlSet\\Services\\Eventlog\\Application\\");
strcat(szName,"CMCard");
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,szName,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
NULL,&hk,&disposition))//为事件源建一个键
{
printf("Unable to create registry key");
return;
}
strcpy (szName,"%SystemRoot%\\System\\MYDLL.DLL");
if(RegSetValueEx(hk,"EventMessageFile",0,REG_EXPAND_SZ,(LPBYTE)szName,strlen(szName)+1))
{//为事件源指定一个解释事件的事件dll.
printf("Unable to create/set registryvalue (message DLL name)");
return;
}
allowed=EVENTLOG_ERROR_TYPE|EVENTLOG_WARNING_TYPE|EVENTLOG_INFORMATION_TYPE;
if (RegSetValueEx(hk,"TypesSupported",0,REG_DWORD,(LPBYTE)&allowed,sizeof(DWORD)))
{//为事件源指定类型
printf("Unable to create/set registry value (message types)");
return;
}
RegCloseKey(hk);
二.编写事件dll.(用于解释事件id表示的内容)
更多精彩
赞助商链接