目的
ファイルやディレクトリをゴミ箱に移動させるプログラムを作成した時の調査メモを備忘録として記録する。
概要
Windowsの場合、ゴミ箱を操作するのは少々面倒。
というのもゴミ箱は特殊フォルダらしく、管理方法が通常のディレクトリと異なる。
そのため、単純にmove類のコマンドで操作することはできない(ゴミ箱の仕様に準拠せずに、ファイルを移動だけならできなくもない。GUI上のゴミ箱に表示されない可能性がある)。
ゴミ箱の場所
C直下の隠しファイルである$Recycle.Bin
がゴミ箱である。
C:\>dir /a
C:\ のディレクトリ
2000/01/01 12:34 <DIR> $Recycle.Bin
...(snip)
さらに中にはSID(セキュリティ識別子)ごとにディレクトリがある。SIDに関してはWiki1 等を参考にされたい。
※ なお、SIDのリストはregeditでHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
で確認することが可能
C:\> cd $Recycle.Bin && dir /a
C:\$Recycle.Bin のディレクトリ
2000/01/01 12:34 <DIR> .
2000/01/01 12:34 <DIR> ..
2000/01/01 12:34 <DIR> S-1-2-34
2000/01/01 12:34 <DIR> S-1-2-34-1234567890-1234567890-1234567890-1234
SIDディレクトリの中には$I*
と$R*
で始まる、ランダムな文字列名のファイルやディレクトリが存在する。
C:\$RECYCLE.BIN\S-1-2-34-1234567890-1234567890-1234567890-1234 のディレクトリ
2000/01/01 12:34 <DIR> .
2000/01/01 12:34 <DIR> ..
2023/11/11 20:47 88 $IQO4ITQ.txt
2023/11/11 23:36 104 $IW8DVKB
2023/11/11 20:47 24 $RQO4ITQ.txt
2023/11/11 23:36 <DIR> $RW8DVKB
2000/01/01 12:34 129 desktop.ini
Windowsでは削除されたファイル1つに対して、$I*
と$R*
の1組のファイルが生成される。
-
$I*
- メタデータ2 。以下はVersion2(Windows10以降)
オフセット(10進数) サイズ(バイト) 概要 0 8 バージョン情報で、 02 00 00 00 00 00 00 00
8 8 サイズ情報 16 8 削除した時間 24 4 ファイルパスの文字数(NULL文字含む) 24 2*文字数 ファイルパス -
$R*
- ゴミ箱に入れられたファイルやディレクトリ(実データ)