c# - 在 C# 中使用 WMI 读取事件查看器内容时如何获取与文化无关的类型信息

标签 c# wmi event-log

我正在使用以下代码行从 EventViewer 读取日志。

var searcher = new ManagementObjectSearcher(@"\\WS2012-DE01\root\cimv2",
               "SELECT * FROM Win32_NTLogEvent WHERE  Type ='Error'");

以上代码在 en-US 文化中运行良好,但在其他文化中会失败,因为其他文化会将 Error 表示为其他词。

例如:de-DE 文化(德语)中的Error 词表示为 Fehler。我将在不同的环境中使用相同的代码。我不想维护资源文件,因为问题是只有一个词,或者不需要 Translator API,因为采取了安全措施来解决这个问题。谁能给我一个解决方案。

最佳答案

不查询按事件类型名称过滤,而是按内部类型id过滤:

var searcher = new ManagementObjectSearcher(@"\\WS2012-DE01\root\cimv2",
               "SELECT * FROM Win32_NTLogEvent WHERE EventType=1");

您可以在 documentation of the WMI Win32_NTLogEvent class 中查看 EventType 的可能值列表.

请注意,属性Type是一个字符串,包含本地语言的类型,而EventType是一个具有固定含义的整数,如

  • 1 = 错误
  • 2 = 警告
  • 3 = 信息
  • 4 = 安全审核成功
  • 5 = 安全审核失败

关于c# - 在 C# 中使用 WMI 读取事件查看器内容时如何获取与文化无关的类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43092819/

相关文章:

linux - 我可以通过远程 WMI 在 Windows 计算机上运行批处理脚本吗?

web-services - 来自 WebService 的 WMI 调用

c# - WMI 硬件,获取 RAM 信息

python - 使用pywin32获取过去3个月事件日志中所有错误条目的来源,日期/时间和消息的列表

c# - 为什么我不能关闭选项卡(甚至窗口)并验证错误 Devexpress 控件?

c# - 无法引用项目对其运行单元测试

c# - 提升权限不适用于 UseShellExecute=false

c# - 从 REGEX 生成测试数据

c# - 我如何读取 Windows 服务的事件日志

.net - 事件日志文件已满