【问题标题】:How do I get culture-neutral type information when reading event viewer content with WMI in C#在 C# 中使用 WMI 读取事件查看器内容时如何获取文化中立类型信息
【发布时间】:2017-03-29 11:55:31
【问题描述】:

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

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

以上代码在en-US 文化中工作正常,但在其他文化中会失败,因为其他文化会将Error 表示为其他词。

例如:de-DEculture(german) 中的 Error 字表示为 Fehler。我将在不同的环境中使用相同的代码。我不想维护资源文件,因为问题只有一个词,或者由于解决此问题的安全措施而不需要 Translator API。谁能给我一个解决方案。

【问题讨论】:

    标签: c# wmi event-log


    【解决方案1】:

    不按事件类型名称查询过滤,而是按内部类型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 = 安全审核失败

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      相关资源
      最近更新 更多