lfnutils (Long File Name Utilities)
たかはしもとのぶ
2003.03.16
これらのコマンドは NTFS ファイルシステムがサポートしている最大 255 文字までのファイル名およびストリーム名を持つファイルを操作するためのコマンドです
Windows との互換性を保つためか、一般的なコマンドは、この NTFS の仕様に対応しておらず、パス名の最大長は 260 文字に制限されています。
仕様制限に関する詳細は
などを参照してください。
ファイルの入手
このファイルの最新版は以下の URL で入手することができます。
コマンドのヘルプ
基本的に各コマンドには必要最低限の機能しか持たせていません。
WSH などと組み合わせて利用されることを意図しています。
- lfntouch.exe FileName
NTFS で許容される「ファイル名(255文字まで):ストリーム名(255文字まで)」のファイル名のファイルを作成できます。
作成されるファイルの内容は空で何も含まれていません。
既存のファイルを指定して実行した場合、ファイルの更新時刻を更新します。
- lfnwrite.exe FileName
標準入力からデータを読み取り、指定したファイルへ書き込みます。
ファイル名として、NTFS で許容されるファイル名を扱えます。
- lfntype.exe FileName
指定したファイルの内容を読み込み、標準出力に書き込みます。
ファイル名として、NTFS で許容されるファイル名を扱えます。
- lfndel.exe FileName
指定したファイルまたはストリームを削除します。
ファイル名として、NTFS で許容されるファイル名を扱えます。
- lfnexec.exe FileName
拡張子の有無に関係なく、指定したファイルを実行します。
ファイル名として、NTFS で許容されるファイル名を扱えます。これにより、データストリーム上のファイルを指定し実行することができます。
- streamls.exe [-HhlRsVv] FileName
指定したファイルが持つデータストリームを表示します。
再帰オプション(-R)を指定することで、指定したフォルダ配下にあるファイル/フォルダ全てを対象にデータストリームを表示します。
使い方
- 名前付きデータストリームを持つ空のファイルを作成する
lfntouch.exe a.txt:stream.txt
- 作成したデータストリーム(ファイル)に文字列を入力する
echo "Test" | lfnwrite.exe a.txt:stream.txt
- 指定したファイル(フォルダ)の代替データストリームの内容を表示する
lfntype a.txt:stream.txt
- 指定したファイル(フォルダ)が持つデータストリームを全て表示する
streamls.exe -l a.txt
- データストリームへプログラムを配置する
lfntouch.exe a.txt:virus
lfnwrite.exe a.txt:virus > 何かのEXE
- データストリーム上にあるバイナリを実行する
lfnexec a.txt:virus
- 指定したデータストリーム部分のみを削除する
lfndel.exe a.txt:stream.txt
- 指定したフォルダ配下にあるファイル全ての代替データストリームを表示する(再帰オプションを指定)
streamls.exe -lR c:\winnt
- フォルダの代替データストリームを確認する
streamls.exe -R c:\winnt
更新履歴
- lfnutils 1.0(2003/03/17)
- MOD: プロダクト名を lcommands から lfnutils に変更
- MOD: コマンド名を変更
- lcreate → lfntouch
- ldel → lfndel
- lwrite → lfnwrite
- lread → ltype
- lexec → lfnexec
- FIX: streamls: 255文字のストリームを扱うと SEGV で落ちるバグを修正
- MOD: streamls: -B オプションを廃止(常時有効に)
- ADD: streamls: -s オプションを新設(デフォルトストリームを表示しない)
- MOD: lfntouch: 最終更新時刻、最終アクセス時刻を更新するように修正
- streamls 0.42 (2003/03/11)
- MOD: streamls: -l オプションを付加しない際には、名前のないストリームが表示やストリーム数のカウントに含まれないように修正
- MOD: streamls: -l オプションで、ディレクトリ名が \\?\ 付のパス名で表示されていたものを、ドライブ名からのパス名で表示されるように修正
- streamls 0.41 (2003/03/11)
- ADD: streamls: 以下のオプションを付加
- -R (再帰オプション)
- -V (バージョン情報表示オプション)
- -v (冗長出力オプション)
- -l (長い出力オプション)
- -h (ヘルプオプション)
- -H (同上)
- lcommands 0.4 (2003/03/10)
- ADD: lexec コマンドを追加
- ADD: streamls コマンドを追加
- ADD: streamls-R.cmd コマンドを追加
- FIX: all: setlocale() 関数を実行していなかったため、日本語がうまく表示されていなかった箇所を修正
- lcommands 0.2
- lcommand 0.1