Posted at

Windowsのトラブルシューティング用の63のツール「Sysinternal Suite」

More than 5 years have passed since last update.


Sysinternals Suite

Sysinternals SuiteはWindowsのトラブルシューティングを行うツールをまとめたもので下記からダウンロードできる。

http://technet.microsoft.com/ja-jp/sysinternals/bb842062.aspx

以下のツールが含まれる。

名前
説明

AccessChk
ファイル、ディレクトリ、レジストリ キー、グローバル オブジェクト、Windows サービスなどのリソースに対して持つアクセス権を調べるためのコマンドラインツール
http://technet.microsoft.com/ja-jp/sysinternals/bb664922

AccessEnum
ファイル、ディレクトリ、レジスターのアクセス権の一覧をGUIに表示する。
http://technet.microsoft.com/ja-jp/sysinternals/bb897332

AdExplorer
Active Directory (AD) のビューアーおよびエディター。未検証。
http://technet.microsoft.com/ja-jp/sysinternals/bb963907

AdRestore
削除された Active Directory オブジェクトを復元するツール。未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb963906

Autologon
指定のユーザで再起動時に自動ログオンするようにできる。
http://technet.microsoft.com/ja-jp/sysinternals/bb963905

Autoruns
Windowsの起動時に自動実行するプログラムの一覧を表示する。autorunsc.exeはCUIベースで、autoruns.exeはGUIになっている。
http://technet.microsoft.com/ja-jp/sysinternals/bb963902

BgInfo
BgInfoは壁紙にCPUやIPなどの情報を表示する。壁紙に書き込むので無駄なプロセスは使用されない
http://technet.microsoft.com/ja-jp/sysinternals/bb897557

CacheSet
システム ファイル キャッシュのワーキング セットのサイズを設定できるアプレット.未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb897561

ClockRes
システム クロックの精度やアプリケーションが取得できる最大タイマー精度をコンソールで表示する。
http://technet.microsoft.com/ja-jp/sysinternals/bb897568

Contig
ディスク上でファイルが連続した状態になるように、単一のファイルを最適化するコマンドラインのツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897428

Coreinfo
論理プロセッサと物理プロセッサの間のマッピング、NUMA ノードと NUMA ノードが存在するソケット間のマッピング、および各論理プロセッサに割り当てられたキャッシュを確認できるコマンド ラインユーティリティ
http://technet.microsoft.com/ja-jp/sysinternals/cc835722

Ctrl2cap
CapsLock キーで入力する文字を Ctrl キーの文字に変換する.未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb897578

DebugView
DebugView は、ローカル システム、または TCP/IP 経由でアクセスできるネットワーク上の任意のコンピュータにおける、デバッグの出力を監視できるアプリケーション
http://technet.microsoft.com/ja-jp/sysinternals/bb896647

Desktops
最大4つの仮想ディスクトップを切り替えて使用できるようになる。
http://technet.microsoft.com/ja-jp/sysinternals/cc817881

Disk2vhd
VirtualPCで使用する物理ディスクのVHDを作成する。コマンドラインから使用できる。未検証。
http://technet.microsoft.com/ja-jp/sysinternals/ee656415

DiskExt
ボリュームのパーティションがどのディスク上にあるか、パーティションがディスク上のどこにあるかをコマンドラインで返す。管理者権限が必要。
http://technet.microsoft.com/ja-jp/sysinternals/bb896648

DiskMon
ハード ディスクのすべての動作状況をログに記録したり表示したりするアプリケーション。要管理者権限
http://technet.microsoft.com/ja-jp/sysinternals/bb896646

DiskView
ディスクのグラフィカルなマップを表示することができ、ファイルの位置を特定したり、クラスターをクリックして、そのクラスターを占有しているファイルを確認したりできる。
http://technet.microsoft.com/ja-jp/sysinternals/bb896650

Disk Usage (DU)
指定したディレクトリのディスク領域の使用量をレポートするコマンドラインツール。
http://technet.microsoft.com/ja-jp/sysinternals/bb896651

EFSDump
暗号化されたファイルにアクセスする権限があるアカウントを表示するコマンドラインツール。未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb896735

FindLinks
指定されたファイルのために存在するファイルインデックスと任意のハードリンクをレポートするコマンドラインツール
http://technet.microsoft.com/en-us/sysinternals/hh290814

Handle
システムのプロセスで開かれているハンドルに関する情報を表示するユーティリティ。
http://technet.microsoft.com/ja-jp/sysinternals/bb896655

Hex2dec
10進数、16進数の相互変換を行うコマンドラインツール
http://technet.microsoft.com/ja-jp/sysinternals/bb896736

LDMDump
LDMデータベースに格納されているデータを詳しく調査できるユーティリティ.未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb897413

ListDLLs
Windows 9x か Windows NT に読み込まれる DLLのリストを取得するコマンドラインツール
http://technet.microsoft.com/ja-jp/sysinternals/bb896656

LiveKd
マイクロソフト カーネル デバッガーの Kd と Windbg を、運用システムでローカルに実行することができる。未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb897415

LoadOrder
デバイス ドライバーが読み込まれる順序を表示する。
http://technet.microsoft.com/ja-jp/sysinternals/bb897416

PendMovesとMoveFile
サービスパックや修正プログラムのように再起動後に移動や削除をおこなうためのMoveFileコマンドと、現在ペンディング中のファイルを表示するPendMovesコマンド
http://technet.microsoft.com/ja-jp/sysinternals/bb897556

NTFSInfo
NTFS ボリュームに関する情報を表示するコマンドラインツール。
http://technet.microsoft.com/ja-jp/sysinternals/bb897424

PageDefrag
ページング ファイルとレジストリ ハイブの断片化の確認と最適化を行うらしいが、Windows7 64bitでは動作しない。
http://technet.microsoft.com/ja-jp/sysinternals/bb897426

PipeList
パイプのディレクトリ一覧を取得するコマンドラインツール
http://technet.microsoft.com/ja-jp/sysinternals/dd581625

PortMon
システムのシリアル ポートとパラレル ポートで行われている活動を監視および表示するユーティリティ。未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb896644

ProcDump
条件を指定して、プロセスのダンプを行う。
http://technet.microsoft.com/ja-jp/sysinternals/dd996900

Process Explorer
実行中のプログラムの状態を調べるツール。呼び出し元の親プロセスとの関係をツリーで表現している。
http://technet.microsoft.com/ja-jp/sysinternals/bb896653

Process Monitor
プロセスが行った処理(ファイル、レジストリ、プロセス・スレッドの活動)をリアルタイムに表示するツールである。
http://technet.microsoft.com/ja-jp/sysinternals/bb896645

PsExec
PsExec は Telnet に代わる軽量のユーティリティで、クライアント ソフトウェアを手動でインストールしなくても、他のシステムでプロセスを実行できるだけでなく、コンソール アプリケーションとの十分な対話性も備わっている。しかしVista以降ではUACをOFFにしないと使用できない。
http://technet.microsoft.com/ja-jp/sysinternals/bb897553

PsFile
リモートからアクセスしているファイルやフォルダーの一覧を表示したり、アクセスを終了させるツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897552

PsGetSid
SIDの確認ができる。
http://technet.microsoft.com/ja-jp/sysinternals/bb897417

PsInfo
ローカルまたはリモートの Windows NT/2000 システムに関する重要な情報を収集するコマンド ライン ツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897550

PsKill
ローカルまたはリモートのプロセスを強制終了するツール
http://technet.microsoft.com/ja-jp/sysinternals/bb896683

PsList
ローカルまたはリモートのプロセスの一覧を表示する。
http://technet.microsoft.com/ja-jp/sysinternals/bb8966802

PsLogList
リモート システムにログインして、イベントログのメッセージ文字列を取得できる
http://technet.microsoft.com/ja-jp/sysinternals/bb897544

PsPasswd
ローカル システムまたはリモート システムのアカウントのパスワードを変更できるツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897543

PsService
ローカルまたはリモートのサービスのビューアー兼コントローラー
http://technet.microsoft.com/ja-jp/sysinternals/bb897542

PsShutdowon
ローカルまたはリモートをシャットダウンする。
http://technet.microsoft.com/ja-jp/sysinternals/bb897541

PsSuspend
ローカル システムまたはリモート システムのプロセスを中断できる。終了ではなく中断なので、後から-rオプションを利用することでプロセスを再開できる。
http://technet.microsoft.com/ja-jp/sysinternals/bb897540

RAMMap
物理メモリの使用状況を詳細に分析できるGUIツール
http://technet.microsoft.com/ja-jp/sysinternals/ff700229

RegDelNull
埋め込まれた null 文字が含まれており、標準のレジストリ編集ツールでは削除できないレジストリ キーを検出して削除できます
http://technet.microsoft.com/ja-jp/sysinternals/bb897448

RegJump
ジストリのパスを受け取って、指定のパスが表示された状態で Regedit を開く。
http://technet.microsoft.com/ja-jp/sysinternals/bb963880

RootkitRevealer
ルートキット検出ユーティリティ.未検証。Windows XP(32ビット)およびWindows Server2003(32ビット)では動作するらしいがWin7 64bitでは動作
http://technet.microsoft.com/ja-jp/sysinternals/bb897445

SDelete
Secure Delete.ディスク上にある、削除されたファイルのデータを上書きすることで、ファイルの復元を防ぐ。
http://technet.microsoft.com/ja-jp/sysinternals/bb897443

ShareEnum
でアクセス可能なドメイン内のすべてのコンピューターがスキャンされ、ファイル共有や印刷共有、およびそのセキュリティ設定が表示される.
http://technet.microsoft.com/ja-jp/sysinternals/bb897442

ShellRunas
プログラムを別のアカウントで起動する
http://technet.microsoft.com/ja-jp/sysinternals/cc300361.aspx

Sigcheck
画像がデジタル署名されているかどうかを確認して、バージョン情報をダンプする。未検証。PDFの署名は検出しない。
http://technet.microsoft.com/ja-jp/sysinternals/bb897441

Streams
関連付けられたストリームを持つ NTFS ファイルを確認できるツール
ストリームについては下記参考
http://www.atmarkit.co.jp/fwin2k/win2ktips/1363streams/streams.html
http://technet.microsoft.com/ja-jp/sysinternals/bb897440

Strings
プログラム中の文字を抜き出す。ただし、日本語は抽出できない
http://technet.microsoft.com/ja-jp/sysinternals/bb897439

Sync
ファイル システム データの安定性を確保し、システム障害時にデータが失われないようにするために、すべてのファイル システム データをディスクにフラッシュするようオペレーティング システムに指示する
http://technet.microsoft.com/ja-jp/sysinternals/bb897438

TCPView
ネットワークの接続状況を確認するためのツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897437

VMMap
プロセスの仮想メモリと物理メモリを分析するユーティリティ。このユーティリティでは、プロセスで使用している仮想メモリの種類と、オペレーティング システムによって各種類に割り当てられた物理メモリ (ワーキング セット) の量の分析結果を表示する。
http://technet.microsoft.com/ja-jp/sysinternals/dd535533

VolumeID
ボリューム ID を変更する.未検証
http://technet.microsoft.com/ja-jp/sysinternals/bb897436

Whois
指定されたドメイン名または IP アドレスの登録レコードを表示
http://technet.microsoft.com/ja-jp/sysinternals/bb897435

WinObj
NT オブジェクト マネージャーの名前空間の情報にアクセスしてその情報を表示する
http://technet.microsoft.com/ja-jp/sysinternals/bb896657

ZoomIt
画面を拡大したり、画面に注釈を記入したりするツール
http://technet.microsoft.com/ja-jp/sysinternals/bb897434


補足説明


DebugView

APIのOutputDebugStringで指定した文字列を表示するデバッグ用のツール。

VisualStudioなどをインストールせずに、実行環境でトレースログを出力することができる。

Releaseビルドでも出力されるので、通常のDebug実行などで再現できない不具合を追跡するのに使用する。

VC++

void CDebugDemoDlg::OnBnClickedButton1()

{
// TODO: ここにコントロール通知ハンドラ コードを追加します。
OutputDebugString(L"TEST用の出力");
}

VisualStudioからプロセスを実行した場合、DebugViewには何も出力されず、VisaulStudioの出力ウィンドウに出力される。

C#

private void button1_Click(object sender, EventArgs e)

{
Trace.WriteLine("テスト1");
}

System.Diagnostics.Traceを使用する。

こちらはVisualStudioからプロセスを実行した場合でもDebugViewと出力ウィンドウの両方に出力される。

VBA

Declare Sub OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String)

Public Sub test()
OutputDebugString "ああdddあtest"
End Sub

一応これで出力できるが、可能ならCOMでラップしてやったほうがいい。


Process Monitor

Process Monitorはリアルタイムで、プロセスのファイルやレジストリに対するアクセスを表示する。

Procmon.exeを管理者権限で動作させる必要がある。

このツールを用いれば、どのプロセスがどのファイルやレジストリを書き込んでいるか、または、指定のパスを操作しているプロセスはどれかを追跡することができる。

すべての情報をトレースすると量が多いので、プロセスによってフィルタをかけたり、パスにフィルタをかけるとよい。


Process Explorer

タスクマネージャの上位互換。

呼び出したプロセスによってツリーを構築している。

アイコンを選択後、ウィンドウズを選択すると、そのウィンドウの所属するプロセスを表示する機能も有している。


PendMovesとMoveFile

このツールの説明の前にリブート時の移動について説明する。

サービスパックや修正プログラムのように再起動後に移動や削除をおこなうためにMoveFileEx APIのフラグにMOVEFILE_DELAY_UNTIL_REBOOTがある。

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

MoveFileツールは、MoveFileExAPIをMOVEFILE_DELAY_UNTIL_REBOOTとともに実行したものである。

もし、MOVEFILE_DELAY_UNTIL_REBOOTフラグをつけたときに、移動先にブランクを入れた場合は、移動ではなく削除になる。

このフラグをつけて実行した場合、下記のレジストリに、移動情報が格納され、再起動時に実行される。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

そして、このレジストリの内容を確認するのが、PendMovesコマンドになる。


PsExec~PsSuspendコマンド

これらのコマンドは、リモートの端末に対して操作を行える。

ただし、リモートでこれらのコマンドを実行するにはリモート端末で、いくつかの設定が必要になる。

・ファイアーウォールの設定でポートを開ける

・WindowsXPの場合は、「簡易ファイルの共有を使用する」のチェックを外す

・Vista以降の場合はUACを無効にする必要がある。

これらは、セキュリティー的に不適切な設定なので、すくなくともVista以降で常時使うツールにすべきでない。


Autologon

指定のユーザでリブート時にオートログインにできる。

当然、セキュリティー的にのぞましくない。

しかし、再起動が必要な自動テストを行う場合は必要になる。

例:

OS再起動後、アプリケーションの処理を実行して速度を計測する。

それを10回繰り返すなど。


まとめ

いくつかのツールはWinXP用で動作しないものもあるが、DbgView、ProcessMonitorなどは強力なツールなので、これの有無が生産性を劇的に変えると思われる。

なお、これらは、個別でもダウンロードできる。