Windows Internals II - NTFS and C# 補足資料

Project III - NTFS and C#

課題内容 (資料日本語意訳)

NTFS ボリュームの raw data を 読み、Master File Table の属性を dump するプログラムを C# で書いてください

まずは Visual Studio 2005 日本語ベータ 1 をインストールしてください
もちろん Visual Studio をすでに持っている人はそれを利用してかまいません
ダウンロードには .Net passport ユーザ登録が必要です

次にマシン上に NTFS ボリュームおよび、それに対する administrator 権限でアクセスできることが必要です
(NT kernel の Windows マシンを所有していれば OK なはずです

File.Open(@"C:\$Volume")

によって 1024 バイトずつディスクから読み出し、ANSI text の "FILE" で始まるレコードを探します
これは普通 MFT エントリの中にあります

その後に続く詳細情報を使って、見つけたレコードのファイル名を出力してください

record 数が多すぎるので、検索数、表示数を制限してもかまいません

ファイル名を出力するには各レコード内で属性のリストをたどらなければなりません

次に各レコードの typecode とその他の情報も出力してみましょう

NTFS のフォーマット形式は公開されていませんが、Unix の inode 構造体と同じような基本構造をみることができるでしょう

提出内容

  • C# プログラムソース
    • NTFS ボリュームを読み、ファイル名を出力するプログラム
    • NTFS ボリュームを読み、レコード情報を出力するプログラム
  • プログラム内部仕様(プログラムの説明)
  • プログラム外部仕様(動作環境, 実行方法)
  • 実行例 (長すぎる場合は適宜省略してください)
  • 考察 (特に Unix inode 構造体との比較は必ず行うこと)
  • あれば感想(難易度, 興味深かった点, 苦労したりした点など)

提出方法

inagami@is.s.u-tokyo.ac.jp にメールで提出
ただし以下の形式を守ってください
  • Subject は ms-report-3
  • 本文最初に、所属、学生証番号、氏名を必ず明記
  • プログラムソース以外はメール本文に text 形式で記述
  • プログラムソースは学生証番号(半角数字)でフォルダを作り、その中に提出内容を入れ zip, lzh, cab, 7z のいずれかの形式で圧縮して添付

質問

inagami@is.s.u-tokyo.ac.jp までメールで質問して下さい
その際、Subject は ms-question とし、メール本文に所属、学生証番号、氏名とともに text 形式で記述して下さい
ただし、内容によっては返答に時間がかかる場合もあるかもしれません

Visual C# 2005 Express Edition Beta を使った C# によるプログラム作成

課題に最低限必要な Visual C# 2005 Express Edition Beta を使って C# によるプログラム作成方法を説明します

  1. 何はともあれ Visual C# 2005 Express Edition Beta を起動します
  2. 最初に登録うんぬんがでますが好きにしてください
  3. まずはプロジェクトを作成します
    ファイル新規作成プロジェクトコンソール アプリケーション を選択
    ダイアログが開くのでプロジェクト名を適当に決めて OK をクリック
    するとプロジェクトが作成され、Program.cs という C# ソースファイルがその中に生成され、開かれます
  4. このファイルに処理を C# で記述していきます
    ここではためしに Main Method の中に
    Console.WriteLine("Hello, World !");
    という 1 行を追加してみます
  5. 記述が終了したら ファイルソリューションのビルド (F6) でプログラムをコンパイルします
    このときソースコードにエラーがある場合はエラーメッセージが表示されるので、修正してから再コンパイルします
  6. コンパイルに成功したら デバッグ開始 (F5) でプログラムを実行することができます
    さきほどのソースコードの例では、コンソールというウィンドウに
    Hello, World !
    と表示されるはずです

参考 : 連載  改訂版 C#入門1-1 C#で「Hello World!」


TOPへ戻る