DOBON.NET DOBON.NETプログラミング掲示板過去ログ

イベントログをファイル出力(エクスポート)したい

環境/言語:[Win2003(開発はXP)、.NETFFramework1.1]
分類:[.NET]

はじめまして。

とあるパソコンのイベントログ(OSはWin2003STD)をエクスポートするツールを作成しています。

わかりやすく言えば、「イベントビューア」の「アプリケーション」や「セキュリティ」「システム」と
いった階層がありますが、例えば「アプリケーション」のところで右クリックして
メニューを出します。
そして「ログファイルの名前をつけて保存」・・・この機能を作りたいのです。

VB.NET2003で作成しているのですが、思いつく限りの試行錯誤はしてみたのですがエクスポートの
ようなことができませんでした。

既存ログを読み込んで、新規ログを作ってループで1つずつコピーしていくという手も
考えましたが、登録日時が異なってしまうのであまり意味がありませんでした。

X:\Windows\System32\config内にある、EVTファイル(それぞれ)をコピーして・・・と
思ったのですが、コピーして名前を変えて読み込んでみても「壊れています」になります。
(どうやら開いたままの状態なんじゃないかと思っています)

何かよいアドバイスや参考になる文献やHPなどありましたら、情報提供をお願いいたします。
> 何かよいアドバイスや参考になる文献やHPなどありましたら、情報提供をお願いいたします。

  いや・・・ここのサイトのTipsにありますが・・・

  http://dobon.net/vb/dotnet/system/geteventlogs.html

  お世話になっているサイトの中身くらいちゃんと見ましょう!

以上。
■No24078に返信(オショウさんの記事)
>>何かよいアドバイスや参考になる文献やHPなどありましたら、情報提供をお願いいたします。
>
>   いや・・・ここのサイトのTipsにありますが・・・
>   http://dobon.net/vb/dotnet/system/geteventlogs.html
>   お世話になっているサイトの中身くらいちゃんと見ましょう!

お返事ありがとうございます。
すでに上記のページ等のサンプルは実装済みです。
(もちろんイベントログのエントリのところも参考にさせてもらっています)

取得まではできるのですが、その取得したものを新規で作成したものへ同一条件で
追加ができずに困っています。

説明でも書きましたが、「名前をつけて保存」と同一の機能を実現したいのです。

以上、よろしくお願いいたします。
すいません、追記です。

イベントログをCSV形式など違う形式での保存というロジックはできあがっています。

ただ、イベントログの形式(拡張子:EVT)での作成がどこをどうしたらいいのか試行錯誤中です。

ご存知な方がいらっしゃいましたら、情報提供をお待ちしています。
> 取得まではできるのですが、その取得したものを新規で作成したものへ同一条件で
> 追加ができずに困っています。

  同一条件で追加と言う仕様は?

  それはイベントログに別のログの種類として
  追加すると言うことですか?

以上。
> ただ、イベントログの形式(拡張子:EVT)での作成がどこをどうしたらいいのか試行錯誤中です。

  オリジナルの機能として取得し保存するのではなく
  結局は、拡張子EVTとしてエキスポートさせる機能を
  実現したいと言うことですか?

  欲しい機能がいくつもあるのか、これが望みなのか・・・
  よくわからんです。(ひとりごと)

以上。
http://support.microsoft.com/kb/318763

この記事からすると、できそうですネ!

※ リソースキットに含まれているファイルらしいです。

以上。参考まで
もう1点

http://freebsd.fkimura.com/windows-eventlog-01.html

ここのスクリプト参考になりませんか?
EVT出力をやってます。

上。
動作確認しました。

.NETでEVTファイル出力できました。

これが修正なしで動作しますヨ!
http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=39921

やっぱり知らないだけで、機能あるんですネ〜
勉強になりました。

以上。
■No24087に返信(オショウさんの記事)
> 動作確認しました。
> .NETでEVTファイル出力できました。
> これが修正なしで動作しますヨ!
> http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=39921

お世話になります。
上記のページ(C#)をVB.NETに流用してみました。
一応動作はしましたが、上記ページの記事によれば・・・本格的に翻訳はしてませんが
「アクセス拒否と出てしまう。誰か助けて・・・」という書き込みのようです。

そして、私も同様にアクセス拒否の例外が発生して動作しませんでした。
まだC#で構築はしていませんが、何か権限がないからなのでしょうか。
開発環境はAdministrator権限がついているのですが・・・。

これからC#のほうで流用して動作させてみます。
追記です。

参考HPの

ManagementBaseObject outParams = objMgm.InvokeMethod("BackupEventLog",inParams, null);

行でアクセス拒否が発生します。
システムや環境によっては異なるのでしょうか・・・。
(VB.NETに流用しても同じ箇所でアクセス拒否が起こっています)

引き続き情報をお待ちしています。

なお、欲しい機能は「EVTファイルの名前をつけて保存」の部分です。
早い話がバックアップを作成したい・・・なんです。最初に書くべきでした。失礼しました。
> なお、欲しい機能は「EVTファイルの名前をつけて保存」の部分です。
> 早い話がバックアップを作成したい・・・なんです。最初に書くべきでした。失礼しました。

  あれ・・・
  私の環境はVISTAなんですが、管理者権限なしで
  動いてしまいました。

  イベントビューワ起動したらUACで管理者権限聞いて
  きますネ〜・・・

  何ででしょうか・・・摩訶不思議

  Win 2003 Server 上で動作させるんですよね?
  Administrator権限と言うより、Administratorでログイン
  してやってみたらどうなります?

  手元にサーバーOS無いので、解りません・・・

※ 2003 Server 用の.NET Framework のサービスパックは
  どうなっていますか?(関係ないかも・・・)

以上。
すいません!

VISTAには、当然、VS.NET 2003 導入できないので・・・
VS 2005/2008 では、両方、問題なく動作しました。

WinXP で、2003で作りなおしたのを動作させると・・・
WinXPでは、その通りにアクセス拒否になりました。

が・・・

これをVISTA上でそのまま動作させると・・・
なんと問題なく動作してしまいました。

VISTA上には、諸所の都合で.NET Framework 1.1 SDKが導入されて
おり、HOTFIXのKB929729が当たっています。
う〜ん・・・何故でしょう。今すぐには解りません・・・

OSと.NET Framework 1.1 間に何かあるようです。

以上。取り急ぎ・・・
多分これ・・・

http://msdn.microsoft.com/ja-jp/library/8skskf63.aspx

で、

http://msdn.microsoft.com/ja-jp/library/system.security.allowpartiallytrustedcallersattribute.aspx

で解決に至るかと・・・(未検証です)

以上。
■No24097に返信(オショウさんの記事)
> 多分これ・・・
> http://msdn.microsoft.com/ja-jp/library/8skskf63.aspx
> で、
> http://msdn.microsoft.com/ja-jp/library/system.security.allowpartiallytrustedcallersattribute.aspx
> で解決に至るかと・・・(未検証です)

お世話になります。
試行錯誤してみたのですが、この手のことがちょっとわからず結局私の力では解決できませんでした。
サンプルページや、その他検索したりしたのですが・・・。

VB.NET2005では上記の問題が発生しないのでしょうか。
一応.NET2005もありますので、そちらにしてみてもいいのですが(今はないですが)。

結局解決できず・・・残念です。

引き続き情報ありましたら提供をよろしくお願いいたします。
いろいろ試してみましたが・・・
残念ながら現時点では動作せず・・・

http://www.answers.com/topic/eventlog

APIで逃げました。

一応、ちゃんとバックアップできました。
あしからず!

※ どなたか、.NET Framework 1.1 で、正しくパーミッション
  の設定して動作するものの情報ありましたら、よろしく!

以上。
> ※ どなたか、.NET Framework 1.1 で、正しくパーミッション
>   の設定して動作するものの情報ありましたら、よろしく!

  継続していろいろやってみましたが・・・

  .NET Framework 1.1 には、EventLogPermissionAccess.Administrator
  が、『無い』・・・
  .NET Framework 2.0 から追加されてます。

  よって、1.1 では、ネイティブコードのみでは、解決できない
  可能性が高いような・・・

  http://blog.tk-engineering.com/?eid=715779

  ここには、.NET Framework 2.0 での記事が掲載されてます。

参考までに・・・ハフ〜・・・

以上。
■No24113に返信(オショウさんの記事)
>   継続していろいろやってみましたが・・・
>   .NET Framework 1.1 には、EventLogPermissionAccess.Administrator
>   が、『無い』・・・
>   .NET Framework 2.0 から追加されてます。
>   よって、1.1 では、ネイティブコードのみでは、解決できない
>   可能性が高いような・・・

お世話になります。
私もその後いろいろなことをしてみましたが、結局だめでした。
どうにかして・・・と思ったのですが。

また違う方法を検討してみます。
引き続き情報をお持ちの方いらっしゃいましたら提供をお願いします。

オショウ様ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板