Windows 2000 Insider/PC Insider合同特別企画

Windows XPの正体
強化されたコマンドライン・ツール(中編)

4.イベント・ログ/レジストリ関連ツール

デジタルアドバンテージ
2001/12/26

 前編中編に引き続き、Windows XPで強化されたコマンドライン・ツールについて見ていこう。これらのうちいくつかは、すでに以前からResource KitやSupport Tools(Windows 2000インストールCD-ROMの\SUPPORT\TOOLSディレクトリに収容されているツール群のこと。ただしコマンドもヘルプ・ファイルもすべて英語のまま)で提供されていたものであったが、Windows XPでは、これらもOS標準コマンドとしてあらかじめインストールされている。機能的にはそう大きく拡張されているわけではないが、日本語化が行われ、ヘルプなども日本語化されているので、より使いやすくなっている。

イベント・ログ関連ユーティリティ

■eventcreate.exe
 これはイベント・ログに、ユーザーが独自のログ・エントリを作成して、追加するためのコマンドである。自作のプログラムやユーティリティなどでも、このコマンドを呼び出すことにより、Windowsの標準的なイベント・ログにログ情報を出力できるようになった。

C:\>eventcreate /t error /id 100 /l application /d "アプリケーション ログにイベントを作成"
……ID=100のイベントを、アプリケーション・ログに作成させる
成功: 'error' の種類のイベントが 'application' ログ/ソースに作成されました。

■eventquery.vbs
 イベント・ログに記録されている情報を、コマンドライン上で取り扱うためのユーティリティである。デフォルトでは、3種類のイベント・ログ(システム、セキュリティ、アプリケーションの各ログ)について、記録されているエントリの内容を簡単に1行ずつにまとめて表示する。以下は、エラー・カテゴリに属する情報(イベント・ログに赤いバツ印が付けられているエントリ)を、各ログから5つずつ取り出して表示させたところである。このほかにも日付やID、カテゴリ、コンピュータ名、ソースなどを条件にしてフィルタリングして取り出すこともできるので(他のシステムのイベント・ログを参照することも可能)、自動的な報告書の作成やシステムのリモート監視などに役立てることができるだろう。


C:\>eventquery /fi "type eq error" /r 5……現在の最新の5つのイベントを表示させる
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

ホスト 'XPPRO10' の 'application' ログのイベントを一覧表示しています。……アプリケーション・ログ
Type          Event  Date Time                Source            ComputerName
------------- ------ ------------------------ ----------------- --------------
エラー        482    2001/12/21 13:45:15      ESENT             XPPRO10
エラー        482    2001/12/21 13:45:14      ESENT             XPPRO10
エラー        482    2001/12/21 13:45:13      ESENT             XPPRO10
エラー        482    2001/12/21 13:45:12      ESENT             XPPRO10
エラー        482    2001/12/21 13:45:11      ESENT             XPPRO10

情報: 'security' ログで利用できるレコードありません。
……セキュリティ・ログはブランク
ホスト 'XPPRO10' の 'system' ログのイベントを一覧表示しています。……システム・ロ
Type          Event  Date Time                Source            ComputerName
------------- ------ ------------------------ ----------------- --------------
エラー        10010  2001/12/21 12:23:15      DCOM              XPPRO10
エラー        15     2001/12/20 19:15:40      Disk              XPPRO10
エラー        15     2001/12/20 19:15:40      Disk              XPPRO10
エラー        15     2001/12/20 19:15:39      Disk              XPPRO10
エラー        10009  2001/12/19 18:59:11      DCOM              XPPRO10


C:\>eventquery  /v /r 1 /nh /l application……詳細な形式で1レコードだけ表示させてみる
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.



ホスト 'XPPRO10' の 'application' ログのイベントを一覧表示しています。
エラー        482    2001/12/21 13:45:15      ESENT             XPPRO10        General N/A
         HelpSvc (1508) システム エラー 5 (0x00000005): "アクセスが拒否されました。 " が発生したため、ファイル "C:\WINDOWS\PCHealth\HelpCtr\Database\HCdata.edb" のオフセット 10850304 (0x0000000000a59000) に 4096 (0x00001000) バイトを書き込めませんでした。書き込み処理は、エラー -1032 (0xfffffbf8) のため失敗します。このエラーが引き続き発生する場合は、ファイルが破損していて以前のバックアップからこのファイルを復元する必要がある可能性があります。
……これはESENTが出力したエラー。GUIのイベント・ビューア・ツールでレコードを1つだけ選んで、[プロパティ]を表示させた場合と同じものが表示されている。

■eventtriggers.exe
 これは、ある特定のイベントが発生した場合に、指定されたコマンドを実行するように指示するためのコマンドである。例えば特定のアプリケーションが出力するイベントや、システムにエラーが発生したというイベントがログ・ファイルに書き込まれると、それをトリガとして、メールやメッセージを送るコマンドを実行したり(ただしメールを送信するツールはWindowsには付属していないので、別途用意する必要がある)、不要なファイルを消去したり、アプリケーションやサービス、システムを再起動したりすることができる。この際のトリガの条件としては、ログ・ファイルの種類(システム・ログかアプリケーション・ログか、など)、イベントID、イベントの種別、ソースなどを指定できる。以下の例は、アプリケーション・ログにイベントIDが100番のログが記録されると、sendalert.cmdというコマンドを実行するように指示しているところである。このコマンド中には、例えばメールを管理者に送ったりするなど、このイベントに特有のジョブを書き込んでおけばよいだろう。

C:\>eventtriggers /create /tr "Application Alert" /l application /eid 100 /tk sendalert.cmd
……イベント・トリガを定義する
成功: イベント トリガ "Application Alert" は正しく作成されました。
C:\>eventtriggers……定義されているイベント・トリガを表示させる
        ID トリガ名                  タスク
========== ========================= ========================================
         1 Application Alert         sendalert.cmd

レジストリ操作コマンド

■reg.exe
 reg.exeは、コマンドラインでレジストリを操作するためのツールである。従来のWindows 2000ではSupport Toolsに含まれていたが、Windows XPでは日本語化された標準コマンドとして用意されている。

 従来のレジストリ・エディタ(regedit.exeやregedt32.exe)はGUIベースでレジストリを操作するが、このreg.exeはコマンドラインで操作することができる。そのため、例えばスクリプトと組み合わせれば、レジストリを読み出して保存したり、復旧させたり、比較させたりなどということが簡単にできる。また、元の場所とは異なるツリーへレジストリを一時的に読み出すこともできるので(reg saveで保存したレジストリ・ツリーを、別の場所へreg loadで読み出す)、レジストリの内容を変更したり、修正を加えてから元の場所へ書き戻したり、などということもできる。ただしいちいちキーを手で入力していてはわずらわしいし、間違えやすいので、regedit.exeと組み合わせて使うとよいだろう。例えばregeditである特定のキーの位置を選んでから[編集]−[キー名のコピー]を使ってキーの文字列を取得し、それをreg.exeコマンドの引数に貼り付ければよい。こうすれば簡単に長いキー文字列を入力することができる。

C:\>reg save "HKEY_CURRENT_USER\Identities\{E106259D-448F-401D-8659-DC3399173F29}\Software\Microsoft\Outlook Express \5.0\Rules" rules.reg
……レジストリ・キーのファイルへの書き出し
操作は正しく終了しました

C:\>reg load  HKLM\Temp rules.reg……一時的な場所(HKLM\Temp)へのロード

操作は正しく終了しました
 

 INDEX
  強化されたコマンドライン・ツール(前編)
  強化されたコマンドライン・ツール(中編)
    1.ディスク/ファイル関連ツール(1)
    2.ディスク/ファイル関連ツール(2)
    3.タスク制御ユーティリティ
  強化されたコマンドライン・ツール(後編)
  4.イベント・ログ/レジストリ関連ツール
    5.その他のユーティリティ
 
 「Windows XPの正体」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間