c - 当 EventLogProvider 不包含消息表时如何读取 Windows 事件消息

标签 c windows winapi dll

似乎并非所有 Windows 事件消息扩展字符串都在“EventMessageFile”注册表值中指定。例如,对于 Windows 2008 服务器上的“Microsoft-Windows-TerminalServices-RemoteConnectionManager”,EventMessageFile DLL %SystemRoot%\system32\termsrv.dll”不包含消息表:

missing message table

这意味着将 DLL 句柄设置为 termsrv.dll 的 FormatMessageW 不起作用 :( 我在哪里可以获得正确的消息字符串?

最佳答案

带有 MUI resource 的 Windows PE 文件将特定于语言的资源存储在扩展名为 .MUI 的外部 PE 文件中。在这种情况下,对于英语资源,文件将是 %SystemRoot%\system32\en-us\termsrv.dll.mui

大多数 Windows API 在加载资源时自动遵循 MUI 重定向...

关于c - 当 EventLogProvider 不包含消息表时如何读取 Windows 事件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991260/

相关文章:

c - 这些局部变量地址背后的基本原理是什么?

windows - 是否可以在 Windows 8.1 商店应用程序的锁屏上显示 Toast 通知

c# - 以编程方式触发 Windows 7 触摸和手势事件

c++ - 如何通过 Windows API 关闭电脑?

c - 虚拟与分析计时器

c - 关于函数返回的 char 指针的最佳实践

windows - 卸载Npgsql 3.1.6

c++ - windows xp本地时间夏令时问题

.net - 从 native c++ 代码将托管 dll 加载到 AppDomain

C函数指针翻译成Delphi/Pascal?