【发布时间】:2016-05-24 14:48:36
【问题描述】:
我已经实现了一个从我的应用程序登录事件查看器的简单功能。但是,无论错误级别如何,每次我记录某些内容时都会收到以下消息:
找不到来自源 MyAppEvents 的事件 ID 0 的描述。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。
如果事件源自另一台计算机,则显示信息必须与事件一起保存。
我不是事件日志方面的专家,实际上,这是我第一次在 C++ 中使用它,文档令人困惑和误导......
这是我实现的方法,用于封装事件日志调用:
HANDLE source = NULL;
void app_log(std::string m, WORD level) {
std::wstring msg_temp (m.begin(), m.end());
LPCWSTR msg = msg_temp.c_str();
std::wstring name(L"MyAppEvents");
if (source == NULL)
source = RegisterEventSource(NULL, name.c_str());
if (source) {
if (!ReportEvent(source, level, 0, 0, NULL, 1, 0, &msg, NULL))
std::cerr << "Error when logging";
}
else
std::cerr << "Error when logging";
}
我有一个使用 WIX 构建的应用程序安装程序(此安装程序创建登录事件查看器所需的密钥 - 应用程序的子项)并且它运行顺利。但是,我不明白那条消息,也不知道如何将我安装的应用程序附加到事件日志中——我实际上什至不确定这是否是问题所在,或者它是否可能是我的参数之一'm pass as NULL or 0.
我调试时也会出现此消息(未安装,但手动创建了“应用程序子项”)。
你能帮帮我吗?
我不能使用 C++ 托管代码...
【问题讨论】:
标签: c++ windows winapi event-viewer