您可以使用默认的应用事件日志,而不将您的源名称添加到注册表。但是,事件查看器将无法将事件标识符代码映射到消息字符串,除非您注册源并提供消息文件名。
您可以通过在应用键下打开新的注册表子项,并将注册表值添加到新的子项,为注册表添加新的源名称。以下代码示例打开名为SamplApp的新源名称,并将新的子项添加到支持类型的消息文件名和位掩码。
HKEY hk;
DWORD dwData;
UCHAR szBuf[80];
/*
*将您的源名称添加为应用程序下的子项
*键入注册表的EventLog服务部分。
*/
if(RegCreateKey(HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Services\
\\EventLog\\Application\\SamplApp",
&hk))
ErrorExit("could not create registry key");
/ *设置事件ID消息文件名。*/
strcpy(szBuf, "%SystemRoot%\\System\\SamplApp.dll");
/ *将事件ID消息文件名添加到子项。*/
if(RegSetValueEx(hk,/ * subkey handle * /
“EventMessageFile”,/ *值名* /
0,/ *必须为零* /
REG_EXPAND_SZ,/ *值类型* /
(LPBYTE)szBuf,/ *值数据的地址* /
strlen(szBuf)+ 1))/ *值数据的长度* /
ErrorExit("could not set event message file");
/ *设置支持的类型标志。*/
dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
EVENTLOG_INFORMATION_TYPE;
if(RegSetValueEx(hk,/ * subkey handle * /
“TypesSupported”,/ *值名称* /
0,/ *必须为零* /
REG_DWORD,/ *值类型* /
(LPBYTE)& dwData,/ *值数据的地址* /
sizeof(DWORD)))/ *值数据的长度* /
ErrorExit("could not set supported types");
RegCloseKey(hk);