ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

Windowsのイベントログファイル(.evt)についてです。
他OSで保存したイベントログファイルを自環境で読み込むツールを作る事は可能でしょうか?
例えば、WindowsVistaで保存したイベントログをWindowsXPに持ってきたとします。通常、XPのイベントビューアではそのVistaで保存したイベントログファイルは読めないと思いますが、何らかの方法(DLL使用等)でそのファイルを読む事は可能でしょうか?.Netにそのようなクラスか何かあればベストですが・・・

当方の開発環境はVisualStudio2005、開発言語はCまたはVBです。
またOSはWindowsXPを使用しています。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

実際に作っている人が居るので、可能だと思いますよ。


http://www.vector.co.jp/soft/winnt/util/se463062 …

参考URL:http://www.vector.co.jp/soft/winnt/util/se463062 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
紹介していただいたソフトを使用してみました。
どうやら開きたいログのOSから前もって情報を集めておいて、それを参照してログファイルを開くようです。
私のやりたいことと大体あっているのですが、最終的にcsvやテキストファイルにしたいと考えていますので、やはり自作しかないかなぁと思っています。
何か他にヒント等ありましたらお願いします。

お礼日時:2009/05/20 21:26
    • good
    • 0
この回答へのお礼

色々調べてみましたが、ちょっと分かりませんでした。
まぁもうちょっと粘ってみます。
何度もご回答ありがとうございました。

お礼日時:2009/05/30 21:29

リソースキットには、イベントログをテキスト化するツールが存在したはずです。


私なら、イベントログを抜き出す時点で、そのツールでテキスト化して抜き出します。
    • good
    • 0
この回答へのお礼

私がイベントログを取り出すならいいのですが、顧客が・・・という話をしても仕方ないので割愛します。ようは、
イベントログをもらう→解析したいがOSが違う→同じOSのマシンに持っていって読み取り、変換→自分のPCに持ってくる
という手順が面倒なのでツール化できないかと思った次第です。
ご回答ありがとうございました。

お礼日時:2009/05/24 02:34

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAでeventlogを取得したい

EXCEL2003のマクロを使用して、eventlogの6005と6006を取得し、
それらに対応する時刻を出力させたいのですが可能でしょうか。

お分かりになる方 ご教示の程、宜しくお願い致します。

Aベストアンサー

> これらが発生する原因は何が考えられるでしょうか。

OS 名と OS のバージョン、およびマクロ実行時のログインアカウントの権限は?

Sql の WHERE 句が複雑すぎるのかもしれません。これを簡単に、つまり、2回に
わけて 6005 と 6006 を取得するか、WHERE 句の AND 以降を全てカットし、
全てのイベントコードを取得してから、 Excel 側で加工するようにするか...
で改善するかも。

▼ 6005 取得の Sql(6006 は最後を " AND EventCode = 6006”に変更)

  Sql = ""
  Sql = Sql & "SELECT *"
  Sql = Sql & " FROM Win32_NTLogEvent"
  Sql = Sql & " WHERE Logfile = 'System'" _
       & " AND EventCode = 6005"

これにより Excel への出力部 VBA ソースの修正が必要になりますが、その辺は
大丈夫ですよね?

参考URL:http://www.microsoft.com/japan/technet/scriptcenter/topics/help/wmi.mspx

> これらが発生する原因は何が考えられるでしょうか。

OS 名と OS のバージョン、およびマクロ実行時のログインアカウントの権限は?

Sql の WHERE 句が複雑すぎるのかもしれません。これを簡単に、つまり、2回に
わけて 6005 と 6006 を取得するか、WHERE 句の AND 以降を全てカットし、
全てのイベントコードを取得してから、 Excel 側で加工するようにするか...
で改善するかも。

▼ 6005 取得の Sql(6006 は最後を " AND EventCode = 6006”に変更)

  Sql = ""
  Sql = Sql & "SELECT *"...続きを読む

QExcelでWindowsのイベントログを取得したい

最近システム管理関係の業務を行うことになりまずは手始めにイベントログのエラー監視をすることになりました。

そこでExcel2003でWindowsのイベントログの内容を取得するマクロを用意したいのですが、どこかに良いサンプルはありませんでしょうか?

Aベストアンサー

Dim W, C, T, P, N, V, I, X
Set W = GetObject("winmgmts:\\.\root\cimv2")
Set C = W.ExecQuery("SELECT * FROM Win32_NTLogEvent" _
   & " WHERE Type='エラー'") 'エラーのみ収集
For Each T In C
  For Each P In T.properties_
    N = P.Name
    V = P.Value
    X = -1
    If P.IsArray Then
      On Error Resume Next
      X = UBound(P.Value)
      On Error GoTo 0
    End If
    If X < 0 Then
      Debug.Print N; ": "; V
    Else
      For I = 0 To X
        Debug.Print N; "("; CStr(I); "): "; V(I)
      Next
    End If
  Next
Next

プロパティ名と内容がイミディエイトウィンドウに出力されます。
TimeGenerated、TimeWritten は日付なので、次の方法で変換します。
Dim S
Set S = CreateObject("WbemScripting.SWbemDateTime")
S.Value = T.TimeGenerated
その後、Sの各プロパティを参照します。(下記参照)
Year,Month,Day,Hours,Minutes,Seconds,Microseconds
実行するユーザはイベントログを扱う権限が必要です。

Dim W, C, T, P, N, V, I, X
Set W = GetObject("winmgmts:\\.\root\cimv2")
Set C = W.ExecQuery("SELECT * FROM Win32_NTLogEvent" _
   & " WHERE Type='エラー'") 'エラーのみ収集
For Each T In C
  For Each P In T.properties_
    N = P.Name
    V = P.Value
    X = -1
    If P.IsArray Then
      On Error Resume Next
      X = UBound(P.Value)
      On Error GoTo 0
    End If
    If X < 0 Then
      Debug.Print N; "...続きを読む

QReadEventLogについて

教えてください。

ReadEventLogでイベントログ情報を取得したいのですが、わからない所があります。
ReadEventLogのpBufはEVENTLOGRECORD型なのです。ですが、メモリを確保するためGlobalAllocを使いたいのですが、HGLOBAL(Void)型なのでキャストしてもうまくいきません。

型を変える方法があるのでしょうか?
あるのであれば教えてください。

[ソース一部]
EVENTLOGRECORD *pBuf = NULL;
HGLOBAL hDIB;

hDIB = GlobalAlloc(GMEM_FIXED, BufSize);
pBuf = (EVENTLOGRECORD)hDIB; //★ここでエラー
bResult = ::ReadEventLog(hEventLog,EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,0,pBuf,BufSize,&ReadBytes,&NextSize);

Aベストアンサー

キャストでしたら
pBuf = (EVENTLOGRECORD)hDIB;
ではなく
pBuf = (EVENTLOGRECORD*)hDIB;
なるかと思います。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Q「グループ名またはユーザー名」の"SYSTEM"について

細かくアクセス制限を行おうと思い、セキュリティタブを表示するようにしたのですが、「グループ名またはユーザー名」の中で、ほぼ初期値としてはいっている"SYSTEM"は削除すると支障が出るでしょうか。
たとえば「マイドキュメント」フォルダは"SYSTEM"を削除すると支障が出るでしょうか。
"SYSTEM"が絶対に必要なフォルダとは、どういうフォルダでしょうか。
なんとなく"WINDOWS"フォルダには絶対に必要な気がするのですが、「グループ名またはユーザー名」の"SYSTEM"について詳しく解説していただければありがたいです。

Aベストアンサー

SYSTEM のアクセス許可を削除すると、タスクマネージャのプロセスタブで、ユーザー名が SYSTEM となっているプロセスからそのフォルダへのアクセスが出来なくなります。

Windowsにログインする前から起動してPCの保守などを行うようなプロセスは、基本的にSYSTEMユーザーで動いていますので、たとえば、わたしのPCでは、Norton AntiVirusがSYSTEMユーザーのプロセスとして動いていました。

この場合、マイドキュメントフォルダからSYSTEMユーザーのアクセス制御を削除すると、マイドキュメントフォルダは保護されないことになります。

Qスイッチングハブとレイヤ2スイッチの違いについて

妙な質問ですみません。
周辺機器メーカサイトを見ると、スイッチングハブとレイヤ2スイッチと分かれたカテゴリで置かれているのを目にしますが
スイッチングハブとレイヤ2スイッチの違いとは何でしょうか?

どちらもデータリンクの2層目を対象として動き、アドレステーブルを元に対象のポートに搬送波を流すもので、ほぼ同じものと思っていたのですが、上司に質問したところ、
異なるセグメントを混在して接続でき、同一のセグメントが接続されているポートにのみ、搬送波が流れるものがレイヤ2スイッチ(ただし、異なるセグメントにも搬送波を流す方法はある)とのことで、
上記の機能がなく、MACアドレスで識別するだけのものをスイッチングハブ、という回答をもらいました。
 VLANとは別にそういった機能をもったものがレイヤ2スイッチとのことだったのですが、この認識で正解なのでしょうか?
 色々とサイトを見て回りましたが、スイッチとレイヤ3スイッチやルータの解説などは書いてあるところはありますが、レイヤ2スイッチとスイッチングハブの違いについて書かれたサイトが見当たりませんでした。

 違いについて皆様のお知恵を拝借お願いいたします。

妙な質問ですみません。
周辺機器メーカサイトを見ると、スイッチングハブとレイヤ2スイッチと分かれたカテゴリで置かれているのを目にしますが
スイッチングハブとレイヤ2スイッチの違いとは何でしょうか?

どちらもデータリンクの2層目を対象として動き、アドレステーブルを元に対象のポートに搬送波を流すもので、ほぼ同じものと思っていたのですが、上司に質問したところ、
異なるセグメントを混在して接続でき、同一のセグメントが接続されているポートにのみ、搬送波が流れるものがレイヤ2スイッ...続きを読む

Aベストアンサー

これは言葉の言い回しだけです。
スイッチングハブとは、解釈の通りでMACアドレスを管理し、必要なポート以外にはデータを流さない装置です。
レイヤ2スイッチはMACアドレスのみ。
レイヤ3スイッチはIPアドレスまで管理しています。
世の中にはレイヤ4スイッチという装置まであります。

要はみんなスイッチングハブです。
レイヤ2スイッチは、スイッチングハブに含まれます。

Q【Excel】 セルの色での判断はできますか?

使用環境:Office2003

条件付書式を使用して、セルの値がxxならばセルを着色する・フォントを変える、というのは可能ですが、

逆に

セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する

ということは可能でしょうか?
※VBAを使わなければそれにこしたことはないですが、
 必要ならばコーディングも教えてください

よろしくお願いします。

Aベストアンサー

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとVBAを使用しないとセルの色は取得できません

>セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する
VBAを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは?

ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。
ワークシート画面に戻って、適当なセルに
=CellColor(A1)
と入力してみて下さい。A1セルの色番号が表示されます。(背景色なしの場合は0が返ります)
この戻り値判定して、関数などでセルに値をセットすればよいでしょう

Function CellColor(ByVal rng As Range)
With rng.Cells(1, 1).Interior
If .ColorIndex = xlNone Then
CellColor = 0
Else
CellColor = .ColorIndex
End If
End With
End Function

ただしセルの背景色を後から変えても、ユーザ定義関数の戻り値は自動的には変わりません。式を入力した後で背景色を変更した場合は
 ALT+Ctlr+F9
で強制再計算させる必要があります。

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとVBAを使用しないとセルの色は取得できません

>セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する
VBAを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは?

ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QDomainAdminsとAdministratorsの違い

domain環境におけるDomainAdminsとAdministratorsの違いは
何でしょうか?下記Microsoftのサイトで確認しましたが、同じに思えます。
http://technet2.microsoft.com/WindowsServer/ja/library/1631acad-ef34-4f77-9c2e-94a62f8846cf1041.mspx?mfr=true
相違点を教えて下さい。

Aベストアンサー

例として,次のようなWindowsPC群があるとします。
  2台のドメインコントローラ…DC1とDC2
  ワークグループ状態の4台のPC…WS1,WS2,WS3,WS4
個々のPCには,各々のPC1台だけを管理するグループとしてAdministratorsが存在します(注:DC1,DC2は複製なので合わせて1台扱いです)。
WS1~WS4をドメインに参加させると,ActiveDirectory上のDomain Adminsグループが,WS1~WS4の各Administratorsグループのメンバとして追加されます。

上記については質問者が示したWebページで説明されています。同ページの本文3行目にあるHyperLink先「既定のローカル グループ」の記述と併せて,該当箇所を抜き書きしてみました。

●(ドメインコントローラ上の)Administrators
このグループのメンバは、【ドメイン内のすべてのドメイン コントローラ】に対するフル コントロールを持ちます。

●(ドメインコントローラ上の)Domain Admins
このグループのメンバは、【ドメイン】に対するフル コントロールを持ちます。既定では、ドメイン コントローラ、ドメインのワークステーション、およびドメインのメンバ サーバーがドメインに参加したとき、このグループは、これらのすべてで Administrators グループのメンバになります。

●(ローカルコンピュータ上の)Administrators
このグループのメンバは、サーバーのフル コントロールの権限があり……このサーバーをドメインに参加させると、Domain Admins グループがこのグループに自動的に追加されます。

例として,次のようなWindowsPC群があるとします。
  2台のドメインコントローラ…DC1とDC2
  ワークグループ状態の4台のPC…WS1,WS2,WS3,WS4
個々のPCには,各々のPC1台だけを管理するグループとしてAdministratorsが存在します(注:DC1,DC2は複製なので合わせて1台扱いです)。
WS1~WS4をドメインに参加させると,ActiveDirectory上のDomain Adminsグループが,WS1~WS4の各Administratorsグループのメンバとして追加されます。

上記については質問者が示したWebページで説明されています。同ペ...続きを読む


人気Q&Aランキング