次の方法で共有


[ニュースレター アーカイブ ^] [< Vol. 2、No. 3] [Vol. 2、No. 5 >]

Systems Internals ニュースレター Vol. 2、No. 4

www.sysinternals.com
Copyright © 2000 Mark Russinovich


2000 年 8 月 30 日 - 本号の内容:

  1. 論説

  2. SYSINTERNALS の新機能

    • ListDlls v2.23
    • HandleEx v2.26
    • ElogList v2.02
    • LoggedOn v1.1
    • Bluescreen v2.21
    • PageDefrag v2.01
    • LoadOrder v1.1
    • ClockRes v1.0
    • BgInfo v1.0
    • Windows 2000 内の 3 番目の論説
    • Microsoft の Sysinternals
  3. INTERNALS INFORMATION

    • デバッグ特権の力
    • Win2K SP1 の新しい API?
    • WinDev 2000 West
  4. 近日公開予定

    • Tokenmon

共同スポンサー: WINTERNALS SOFTWARE

Sysinternals ニュースレターは、www.winternals.com の Web で Winternals Software によって後援されています。 Winternals Software は、Windows NT/2K 用の高度なシステム ツールの主要な開発者およびプロバイダーです。 Winternals Software 製品には、Wdinows NT 4.0 用 FAT32、NTFSDOS Professional Edition (DOS 用の読み取り/書き込み NTFS ドライバー)、およびリモート回復が含まれます。

Winternals Software の ERD コマンダー 2000 は、受賞歴のある ERD コマンダー製品ラインの最新リリースです。 ERD コマンダー 2000 は、新機能に組み込みのレジストリやファイル エディターを含んでおり、現存する最も高度な Windows NT と Windows 2000 の回復ツールです。 ERD コマンダー 2000 は、フロッピー ディスク、CD-ROM、さらにはシステムのハード ドライブにインストールして、すばやくアクセスできます。また、インストール ウィザードを使用すると、サードパーティ製の SCSI やその他の大容量記憶装置のドライバーを簡単に追加できます。 ERD コマンダー 2000 の価格は $349 ですが、既存の ERD コマンダー Professional 所有者の場合はわずか $49 ドルです。 詳細を確認し、www.winternals.com/products/erdcommander2000.shtml から試用版をダウンロードしてください。

共同スポンサー: Windows 2000 Magazine

Windows 2000 Magazine には、Windows NT/2000 を日常的に使用するユーザー向けの実用的なソリューションが含まれています。 今すぐ、リスクなしで無料サンプル号をご注文ください。 購読を継続される場合は、さらに 13 号分をニューススタンド価格の 40% 割引でお届けします。 今すぐ購読する: http://www.win2000mag.com/sub.cfm?code=fs00inhs13

皆さん、こんにちは。

Sysinternals ニュースレターへようこそ。 現在、ニュースレターの購読者数は 25,000 人です。

私は Bryce と Sysinternals で開発したツール Regmon、Filemon、DebugView に多くの時間を費やしています。 Regmon はレジストリ アクセス モニター (www.sysinternals.com/regmon.htm)、Filemon はファイル アクセス モニター (www.sysinternals.com/filemon.htm)、DebugView はデバッグ出力モニター (www.sysinternals.com/dbgview.htm) です。 時々、私のいくつかのシステムにインストールされているアプリケーションやデバイス・ドライバーが、これらのツールのいずれかに表示される連続的なアクティビティを生成しているのに遭遇することがあります。 必要なアクティビティについて話しているわけではありませんが、ソフトウェアが実行するアクションは通常反復的な性質であり、出力トレースを調べると、ソフトウェアが他よりも影響の少ないポーリング技術を使用していることがわかります。

たとえば、さまざまな商用ウイルス スキャナーは、ウイルス シグネチャ ファイルが更新されているかどうかを確認するために 1 秒間に数回クエリを実行します。 私のシステムの 1 つには、大手プリンタ メーカーのプリンター ドライバーが入っており、"polling" という単語を含めることでポーリングしていることをアドバタイズするデバッグ ステートメントを継続的に出力します。 私の好きな例の 1 つに、システム・パフォーマンスの向上が宣伝されている大手ユーティリティ・ベンダーのユーティリティが、そのベンダーの複数のレジストリ キーに対して 1 秒間に複数回クエリを実行するというものがあります。 別の種類のずさんなコーディングの例としては、大手ネットワーク ベンダーのネットワーク アダプターに、ソフトウェアの実行中に継続的にトリップするデバッグ ブレークポイントが組み込まれたユーザー モード ソフトウェア コンポーネントが含まれているものがあります。 アプリケーションがファイルの変更を検出する必要がある場合、ディレクトリ変更通知を要求できます。 同様に、レジストリ キーの変更を検出する必要がある場合は、キー変更通知を要求できます。商用ソフトウェアには、既定で有効になっているデバッグ出力やデバッグ ブレークポイントを決して含めるべきではありません。

ただし、おそらく最もひどい例は、Windows 2000 Server にバンドルされている Microsoft Windows Media Program Service (\Winnt\System32\Windows Media\Server\Npsm.exe) です。これは、他にアクティビティがない (メディア サービスがないことを含む) システム上で、\Winnt\System32\Windows Media\Server\ASDB\mdsas.mdb の最初の 2 KB を毎秒約 60 回の速度で読み取ります。 特に、これはサーバー全体のパフォーマンスに悪影響を与える可能性があるため、弁解の余地はありません。

Regmon、Filemon、または DebugView をいくらかの期間でも使用したことがある人なら、おそらく同様の例に遭遇したことがあると思います。 このような事例に遭遇したら、ただフィルターを設定して忘れるのではなく、そのずさんなプログラムについてベンダーに苦情のメールを送ってください。

その内容に興味があると思われるお友だちにニュースレターをお渡しください。

ありがとうございます。

-Mark

SYSINTERNALS の新機能

ListDlls v2.23

ListDLLs は、プロセスで読み込んだ DLL に関する詳細情報を表示するコマンド ライン ユーティリティです。 たとえば、ListDLLs には、各 DLL のベース メモリ アドレス、サイズ、バージョン、および完全パスが表示されます。 この新しいバージョンでは、コマンド ラインで渡されたパラメータを含め、プロセスの起動に使用されたコマンド ラインが表示されます。 これは、複数のプロセスを区別し、特定のコマンド ライン オプションに関連する問題のトラブルシューティングに役立ちます。

ListDLLs v2.23 は www.sysinternals.com/listdlls.htm からダウンロードしてください。

HandleEx v2.26

HandleEx は、プロセスがどのハンドルおよび DLL を開いているか、または読み込んでいるかについての情報を提供するアプリケーションです。 表示は、2 つのサブウィンドウで構成されています。 上部には、所有しているアカウントの名前を含む現在アクティブなプロセスの一覧が常に表示されます。一方、下部のウィンドウに表示される情報は HandleEx のモードによって異なります。HandleEx が ハンドル モードの場合は、上部のウィンドウで選択されたプロセスが開いたハンドルが表示されます。DLL モードの場合は、プロセスが読み込んだ DLL とメモリマップ ファイルが表示されます。

HandleEx の最新リリースには、いくつかの新機能が含まれています。 まず、ListDLLs と同様に、プロセスのプロパティを表示すると、プロセスを起動するために使用されたコマンド ラインが表示されるようになりました。

このバージョンより前の HandleEx の欠点の 1 つは、システム プロセスやログイン セッションのプロセスが実行されているアカウントの名前は表示されるものの、Windows NT/2000 のセキュリティ モデルを回避して、他のユーザー アカウントから開始されたプロセスの所有者を表示することができないことでした (Windows NT/2000 リソース キットの Pview プログラムにもこの制限があります)。 これは、NT 4 Terminal Server および Windows 2000 ターミナル サービス環境では痛いほど明らかで、HandleEx は、他のユーザー セッションから開始されたプロセスの所有者が不明であることを示していました。 HandleEx v2.26 は、例外なくすべてのプロセスの所有アカウントを決定できるトリックを実装しており、ターミナル サービス環境に最適なツールとなっています。

HandleEx v2.26 の最後の新機能では、開いているハンドルを強制的に閉じることができます。 多くの要望を受けて、この機能を追加しました。 ただし、アプリケーションは通常、ハンドルが突然無効になることを想定して作成されておらず、ハンドルが強制的に閉じられたアプリケーションは、その結果として異常な動作をしたり、クラッシュしたりする可能性があるため、細心の注意を払って使用することをお勧めします。

HandleEx v2.26 は www.sysinternals.com/handleex.htm からダウンロードしてください。

ElogList v2.02

Windows 2000 リソース キットには、ローカルまたはリモート コンピューター上のイベント ログからレコードをダンプできる、ELogDmp という名前のツールが含まれています。 ELogList は ElogDmp よりも強力で、オプションのアカウント名とパスワードを指定できるため、ツールを実行しているアカウントとは異なるアカウントからコンピューターのイベント ログにアクセスできます。 さらに、ElogDmp ツールは未加工の形式でイベント ログ エントリを表示するため、出力の解釈が難しいのに対し、この ElogList の更新プログラムは、Windows NT/2000 イベント ビューアーに表示されるテキストの表示のようにイベント ログ エントリを書式設定します。 リモート システムからイベント ログを表示する場合でも、ElogList はリモート システム上の正しいメッセージ ファイルを書式設定文字列データとして使用します。

ElogList v2.02 は www.sysinternals.com/eloglist.htm からダウンロードしてください。

LoggedOn v1.1

LoggedOn は、ローカルで、またはリソース共有を通じて、特定のコンピューターにログオンしているユーザーを示すコマンド ライン アプレットです。 バージョン 1.1 の更新プログラムによって、特定のユーザーに関連付けられているログオン セッションをネットワークで検索できるようになります。 この機能は、ユーザー アカウントの更新を実行する際に、そのユーザーが現在ログオンしていないかどうかを確認する必要がある場合に便利です。

完全なソースを含む LoggedOn v1.1 は www.sysinternals.com/misc.htm からダウンロードしてください。

Bluescreen v2.21

Windows NT または Windows 2000 のクラッシュと再起動が正確に描写されている有名な Sysinternals Blue Screen スクリーン セーバーをご存知の方も多いと思います。 最初のリリース以来、Windows 9x ユーザーからコンピューター上でスクリーン セーバーを実行したいという要望が絶えず寄せられていたため、ようやく Windows 9x に移植しました。 Windows 9x では、Windows 2000 のクラッシュと再起動をシミュレートします。

Windows 9x で Sysintenals Blue Screen スクリーン セーバーを使用するための唯一の要件は、Windows 2000 の Ntoskrnl.exe ファイルのコピーを取得して \Windows\System ディレクトリに配置することです。Blue Screen には Windows 2000 スプラッシュ スクリーン用のファイルが必要です。

これで、Windows 9x ユーザーが何も知らずにコンピュータに戻ってきたら、Windows 2000 がクラッシュと再起動のサイクルに陥っていることに気づき、本当に混乱する可能性があります。

Bluescreen Screen Saver v2.21 は www.sysinternals.com/bluescreen.htm からダウンロードしてください。

PageDefrag v2.01

PageDefrag は、システムのページング ファイルとレジストリ ハイブを最適化するために起動時に実行されるデフラグ ユーティリティです。 PageDefrag はレジストリ ハイブを最適化できる最初のユーティリティでしたが、リリース以降、その機能がいくつかの商用の最適化ツールに追加されました。 ただし、PageDefrag はまだ無料であり、バージョン 2.01 は Windows 2000 と Windows NT 4 で動作します。

Windows NT 4 と Windows 2000 で提供されている最適化インターフェイスに関心がある場合は、www.sysinternals.com/defrag.htm で詳細を確認し、対話型のファイル最適化ツールのソース コードをダウンロードできます。 Sysinternals は、Microsoft がプラットフォーム SDK に最適化インターフェイスを組み込む数年前に文書化しており、いくつかの商用の最適化ツールで私たちのドキュメントとサンプル コードが利用されていました。

PageDefrag v2.01 は www.sysinternals.com/pagedfrg.htm からダウンロードしてください。 最適化インターフェイスのドキュメントは www.sysinternals.com/defrag.htm で参照してください。

LoadOrder v1.1

デバイス ドライバーとサービスがどのような順序で読み込まれ、初期化されるのか疑問に思ったことはありませんか? これで簡単にわかります。LoadOrder は、HKLM\System\CurrentControlSet\Services の下の情報を処理して、ドライバーとサービスの読み込み順序の図を作成するユーティリティです。

LoadOrder v1.1 は www.sysinternals.com/misc.htm からダウンロードしてください。

ClockRes v1.0

スケジューラに関する私の記事で、Windows NT/2000 のスレッド クォンタム (CPU 上で実行されるスレッドのターンの長さ) がシステム クロックの分解能に基づいているという事実について説明しました。 クロックの分解能は、タイマーに基づく Windows イベントの待機時間にも影響します。 www.sysinternals.com/timer.htm の記事で、アプリケーションがクロックの分解能を操作する方法についても説明しています。 分解能は、ほとんどの SMP では 15 ミリ秒、ユニプロセッサでは 10 ミリ秒であり、これは標準の SMP とユニプロセッサの HAL (ハードウェア アブストラクション レイヤー) によって設定される値です。

ほとんどのシステムでは上記の一般的な値が使用されていますが、コンピューター上のクロックの実際の分解能を判断するにはどうすればよいでしょうか? その答えは、GetSystemTimeAdjustment Win32 API にあります。これは、システムが時刻クロックに定期的な調整を適用しているかどうかを示します。 偶然にも、この API はクロックの間隔も返します。 ClockRes アプレットはこの API を使用して、システムのクロックの分解能を示します。

ClockRes とソースは www.sysinternals.com/misc.htm からダウンロードしてください。

BgInfo v1.0

複数のサーバーを担当する管理者であれば、インストールされているサービス パックのバージョン、IP アドレス、コンピューター名、メモリ サイズ、プロセッサ速度など、さまざまなシステム プロパティの値を思い出すために、さまざまな情報ダイアログを開くことにかなりの時間を費やしていることでしょう。 Bryce が開発した BgInfo ユーティリティを使用すると、各サーバーのデスクトップ上でこれらすべての情報を一目で確認できるようになります。

BgInfo を実行すると、さまざまな有用なシステム特性を自動的にレポートするデスクトップの背景が作成されます。 BgInfo をスタート フォルダーに配置すると、ログインするたびに情報を利用できるようになります。また、BgInfo で表示されるデータを変更したり、独自のデータを追加したりすることもできます。 BgInfo をサーバーにインストールすると、忘れやすい情報を繰り返し調べる時間を節約できます。

BgInfo v1.0 は www.sysinternals.com/bginfo.htm からダウンロードしてください。

INSIDE WINDOWS 2000、第 3 版

Windows 2000 の内部に関する公式書籍が公開されました。 David Solomon (www.solsem.com) と Mark Russinovich の共著であるこの版は、ネットワーク、プラグアンドプレイ、電源管理、サービス、レジストリ、WMI、ブートとシャットダウン、ストレージを新たにカバーし、前版より 40% 以上量が増えています。 また、Windows 2000 の内部を調査するために、他の場所では利用できないいくつかの強力なツールを備えた CD も含まれています。

本の目次を見て、今すぐ www.sysinternals.com/insidew2k.htm から発注してください。

SYSINTERNALS AT WWW.MICROSOFT.COM

Sysinternals を参照してレポートを作成した 新しい KB 記事はありませんが、Microsoft は、サイトの TechNet 部分にかなり注目度の高い Sysinternals へのリンクを追加しました。 1 つ目は、www.microsoft.com/TechNet/security/au022800.asp の「Ask Us About...Security」コラムで、コラムニストの Joel Scambray が、悪意のあるユーザーによって NTFSDOS (www.sysinternals.com/ntfspro.htm) が Windows 2000 ドメイン コントローラーの Active Directory の内容を変更するために使用される可能性があることを読者に警告しています。

2 番目の言及は、www.microsoft.com/technet/inside/default.asp の「Inside Microsoft」コラムにあります。 このコラムは Q&A 形式で、特定のファイルがどのアプリケーションで開かれているかを判断することに関する 2 つの質問で始まります。 回答の過程で、読者が HandleEx (www.sysinternals.com/handleex.htm) と NtHandle (www.sysinternals.com/nthandle.htm) に仕向けられている箇所で、記事の著者 ("Mole") は Sysinternals について次のように述べています: "そこには 1 セントもかからない素晴らしいユーティリティがたくさんあります。 Mole でさえ、時々 Sysinternals を参照します (えっ? Mole はこれらすべての情報を頭の中に入れていると思っていました?) もう一度言いますが、ここが彼があなたを送り届けようとしている場所です。" これは、Microsoft による公式な推奨にかなり近いものであると思われます。

INTERNALS INFORMATION

デバッグ特権の力

DebugView デバッグ出力モニター (www.sysinternals.com/dbgview.htm) は、dbmon などの他のデバッグ出力モニターとは異なり、カーネル モードのデバッグ出力をキャプチャするデバイス ドライバーをインストールするため、実行にローカル管理者特権が必要です。 その結果、管理者がローカル管理者特権を与えてくれず、デバッグ特権しか与えてくれないという不満のメールを、開発者から何十通も受け取りました。 この主張は、デバッグ特権は理由があって存在し、アプリケーション開発者が開発するために必要であるというものです。 これらの開発者は、DebugView を変更して、ユーザーが管理者特権を持っている場合にのみドライバーをインストールし、そうでない場合は Win32 デバッグ出力を収集するだけにするように依頼してきます。

これらの要求にはいつも含み笑いをしてしまいます。なぜなら、デバッグ特権を主張する管理者は、この特権がローカル管理者特権への扉を開くということを認識していないからです。 デバッグ特権を使用すると、開発者は Local Security Authority process (LSASS) にデバッガを接続し、それを操作して、次回のログイン時にローカル管理者特権を与えることができます。 あるいは、システム アカウントで実行されているプロセスに、自分のアカウントをローカル管理者グループに追加するコードを挿入することもできます。 苦情を申し立てている開発者に説明すると、彼らは管理者が言い分を理解してくれないと答えることがあります。 これまでは、彼らが管理者に主張し返すことができるようにするものは何もありませんでしたが、最近そのようなメールが急増したため、私は対応策を取りました。

LogonEx は、www.sysinternals.com/logonex.zip からダウンロードできるユーティリティで、デバッグ特権の影響力をグラフィカルに示します。 LogonEx は、Windows NT と Windows 2000 で動作します。 最適に表示するには、"デバッグ プログラム" 特権を追加する以外は、通常のユーザー アカウントであるアカウントを作成します。 ログオフし、そのアカウントでログインし、LogonEx を実行します。 特定のインストールには msv1_0.dll のシンボル ファイルが必要です (通常、開発者にはシステム シンボルがインストールされています)。LogonEx はこれを使用してMsvpPasswordValidate 関数のエントリ ポイントを特定し、パッチを適用します。 LogonEx がパッチを適用すると、パスワードを指定せずに任意のアカウントを使用してシステムにログインできるようになります。 管理者としてログインし、作成したアカウントをローカル管理者グループに追加して、デモを完了します。

LogonEx は、デバッグ特権によって開発者がシステムを制御できるようにする方法の一例にすぎませんが、他にも方法はたくさんあります。 LogonEx が、開発者にローカル管理者権限を与えないのは意味がないと管理者を説得してくれることを願っています (ただし、ドメイン管理者権限について話しているわけではないことに注意してください。これは別の話であり、ローカル管理者は自分のコンピューターのみ管理し、他のコンピューターは管理しないのに対し、ドメイン管理者はネットワークを管理します)。

Win2K SP1 の新しい API?

多くのユーザーが NT 4 Service Pack (SP) で新たなバグを引き起こす問題に遭遇したことを受けて、Microsoft は、古い問題を修正した際に新たな問題が発生する可能性を最小限に抑えるために、SP に新しい機能を含めないようにするポリシーを採用しました。 と、私たちは思っていました。 Windows 2000 SP 1 が最近リリースされましたが、新しい機能はないように見えました。 しかしながら、Ntoskrnl.exe (Windows 2000 のエグゼクティブ コンポーネントとカーネル コンポーネントを含むファイル) と Ntdll.dll (ネイティブ API とローダーを含むライブラリ) を詳しく調べると、新しい API が SP 1 で追加されたことが明らかになりました。

新しい API は、次の関数で構成されます。

   RtlTraceDatabaseAdd
   RtlTraceDatabaseCreate
   RtlTraceDatabaseDestroy
   RtlTraceDatabaseEnumerate
   RtlTraceDatabaseFind
   RtlTraceDatabaseLock
   RtlTraceDatabaseUnlock
   RtlTraceDatabaseValidate

関数の名前は非常にわかりやすいので、これは明らかにイベントをログに記録するための API です。 この API の興味深い点は、その実装が Ntdll と Ntoskrnl で重複していることです。これは、Ntoskrnl の実装のサービスを呼び出す他の Ntdll API とは異なります。

API の実装を調べると、この API が次のように使用されていることがわかります。アプリケーションは、アプリケーションの仮想メモリに保存されるトレース データベースを作成し、データベースにエントリを追加します。 ある時点で、アプリケーションはデータベースの内容を列挙できるようになり、データベースの使用が完了すると削除します。 奇妙なことに、データベース エントリを削除する方法はないようです。

この新しい API は何に使用されているのでしょうか? 私のかなりフル機能の Windows 2000 Advanced Server インストールでは何もインストールされていないため、明らかではありません。 これは SP 1 のリリース コードに誤って含まれてしまったデバッグ API だったのかもしれません。

公開日: 2000 年 8 月 30 日 (水) 午後 7:07 by ottoh

[ニュースレター アーカイブ ^] [< Vol. 2、No. 3] [Vol. 2、No. 5 >]