none
Win2008(x64) での WMI によるイベントログの取得 RRS feed

  • 質問

  • 印刷物の監査をイベントログに出力し、それを VB2005 から取得しようとしています。

    Win2003(x86) ではうまく取れるのですが、Win2008(x64) では取得できないので、何かアドバイス等お願いいたします。

     

    ■ソース

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim sq As New SelectQuery("select * from Win32_NTLogEvent Where Logfile='System' and SourceName='Print'") 

            Dim mos As ManagementObjectSearcher = Nothing

            Me.ListBox1.Items.Clear()

            Try
                mos = New ManagementObjectSearcher(sq)
                MsgBox(mos.Get.Count)
                For Each mo As ManagementObject In mos.Get
                    Me.ListBox1.Items.Add(mo("EventCode").ToString + " / " + mo("Message").ToString)
                    mo.Dispose()
                Next
            Finally
                If Not mos Is Nothing Then
                    mos.Dispose()
                End If
            End Try

        End Sub

     

    ■状況

    Win2003(x86)では上記ソースでうまくとれます。

    Win2008(x64)のイベントログを見ると、イベントソースが"PrintSpooler"となっていたので、SourceName を "PrintSpooler" に変更してみたのですが、とれません。途中で表示される MsgBox では 0 件とでてきます("Print"のまま試しても 0 件 。)

    以上から、from 句の次の "Win32_NTLogEvent" が 64bit 版では違ってくるのかと推測しているのですが、

    インターネットで検索しても情報を見つける事ができませんでした。

     

    尚、.NET アプリは Any CPU / x64 の両方のビルドで試しました。

    2008年9月10日 2:56

回答

  • VB.NETは触っていないので、推測ですが、セキュリティの問題か、インスタンスを生成できていないのではないかと思います。

    イベントログのRead/Writeであれば、System.Diagnostics.EventLogクラスを使用したほうが良いと思いますよ。

    2008年9月10日 3:17

すべての返信

  • VB.NETは触っていないので、推測ですが、セキュリティの問題か、インスタンスを生成できていないのではないかと思います。

    イベントログのRead/Writeであれば、System.Diagnostics.EventLogクラスを使用したほうが良いと思いますよ。

    2008年9月10日 3:17
  • 書き込みありがとうございました。

     

    イベントID が欲しかったのですが、EventLogEntry を使った場合 EventID が Obsolate になっていまして気持ち悪かったので、こういう実装にしていました。

    改めて調査しましたところ、EventLogEntry の InstanceId を元に EventID が取得できることがわかり、EventLog を使って組みなおし、Win2008(x64) 環境で動作させてみると無事動きました。

    コンストラクタでイベントソースの絞り込みができないのがまだ謎ですが、とりあえずこれで行きたいと思います。

     

    ありがとうございました。

    2008年9月10日 4:13