1

このページの最後の例を WMI で使用して、Windows システム ログ情報を出力しています: http://msdn.microsoft.com/en-us/library/aa394593(VS.85).aspx

バイナリ データも出力したいのですが、WScript でそれを行う方法がわかりません。これが私の変更されたコードです:

' test.vbs
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent " _
        & "Where Logfile = 'System' and SourceName = 'MySource'")
For Each objEvent in colLoggedEvents
    Wscript.Echo "Category: " & objEvent.Category & VBNewLine _
    & "Event Code: " & objEvent.EventCode & VBNewLine _
    & "Message: " & objEvent.Message & VBNewLine _
    & "Time Written: " & objEvent.TimeWritten & VBNewLine _
    & "Event Type: " & objEvent.Type & VBNewLine _
    & "Binary Data: " & objEvent.Data
Next

test.vbs を実行すると、Windows Script Host から次のエラー メッセージが表示されます。

エラー: タイプの不一致、コード: 800A000D、ソース: Microsoft VBScript ランタイム エラー

データを16進文字列として出力する方法はありますか?

4

1 に答える 1

1

.Data整数値の配列です (見た目からリトルエンディアンでエンコードされたワイド文字)。ChrW()データを印刷する前に、数値の各ペアを文字列に連結する必要があります。次のような関数が機能する可能性があります。

Function ToStr(arr)
  ToStr = ""
  For i = 0 To UBound(arr) Step 2
    ToStr = ToStr & ChrW(arr(i) + arr(i+1)*256)
  Next
End Function
于 2013-01-23T20:59:36.140 に答える