ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND 与 Windows EWT
ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND with Windows EWT
我正在尝试将一个非常简单的日志打印到 Windows 事件查看器。当我在我的 .cpp 文件中调用 EventWrite()
时,我在事件查看器中收到错误代码 15003 ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND
,并且没有显示我的消息。我认为我遇到的问题是编译清单时生成的 .rc
文件没有与项目一起编译,即使我已将它拖到解决方案资源管理器中的资源文件夹中。
当我使用 wevtutil.exe
注册我的清单时,我收到以下警告:Publisher ExampleProvider resources are not accessible
。当我询问有关此错误的详细信息时,我收到此输出:Failed to open metadata for publisher ExampleProvider. Access is denied
。
我已经查看了 Access is denied while register provider (wevtutil) 并没有解决问题。
您可以通过在 Visual Studio 中打开已编译的 .dll
或 .exe
文件轻松验证您的 .rc
文件是否已正确编译到您的项目中。转到 File->Open->File
并打开您的可执行文件或库。现在检查是否可以看到编译后的 ETW 资源文件。在我的项目中,它位于文件夹 "WEVT_TEMPLATE" 中。如果您没有在您的二进制文件中看到它,那么您可能还没有将它编译到您的二进制文件中。为此,请将您的 .rc
添加到您的项目中(选择添加资源)。
旁注:还请验证清单文件中的 ResourceFileName 和 messageFileName 是否正确指向您的库或可执行文件。
在命令提示符中 运行 注册命令之后。
wevtutil im yourProvider.man
之后您可以通过 运行 以下命令检查您的提供商注册以及可能的错误:
wevtutil gp yourProvider
希望对您有所帮助。
我发现这是一个权限问题,就像 Access is denied while register provider (wevtutil) 中一样。我通过将我的项目放在我的 C 驱动器的根目录来纠正这个问题。
我正在尝试将一个非常简单的日志打印到 Windows 事件查看器。当我在我的 .cpp 文件中调用 EventWrite()
时,我在事件查看器中收到错误代码 15003 ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND
,并且没有显示我的消息。我认为我遇到的问题是编译清单时生成的 .rc
文件没有与项目一起编译,即使我已将它拖到解决方案资源管理器中的资源文件夹中。
当我使用 wevtutil.exe
注册我的清单时,我收到以下警告:Publisher ExampleProvider resources are not accessible
。当我询问有关此错误的详细信息时,我收到此输出:Failed to open metadata for publisher ExampleProvider. Access is denied
。
我已经查看了 Access is denied while register provider (wevtutil) 并没有解决问题。
您可以通过在 Visual Studio 中打开已编译的 .dll
或 .exe
文件轻松验证您的 .rc
文件是否已正确编译到您的项目中。转到 File->Open->File
并打开您的可执行文件或库。现在检查是否可以看到编译后的 ETW 资源文件。在我的项目中,它位于文件夹 "WEVT_TEMPLATE" 中。如果您没有在您的二进制文件中看到它,那么您可能还没有将它编译到您的二进制文件中。为此,请将您的 .rc
添加到您的项目中(选择添加资源)。
旁注:还请验证清单文件中的 ResourceFileName 和 messageFileName 是否正确指向您的库或可执行文件。
在命令提示符中 运行 注册命令之后。
wevtutil im yourProvider.man
之后您可以通过 运行 以下命令检查您的提供商注册以及可能的错误:
wevtutil gp yourProvider
希望对您有所帮助。
我发现这是一个权限问题,就像 Access is denied while register provider (wevtutil) 中一样。我通过将我的项目放在我的 C 驱动器的根目录来纠正这个问题。