ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × « TS2TSJ25M3の中身とベンチマーク ラチェクラの「返品ポリシー」トロフィーは2周目序盤が簡単 » 代替データストリームの取得はNtQueryInformationFile一択 C#でNTFSの代替データストリーム(Alternate Data Stream)を読み書きしたくなったので調べたことをメモ。正確な部分は把握しきれてないが、非公開関数であるNtQueryInformationFileで列挙するのが確実のようだ。 代替データストリームの取得(列挙)には以下の3つの方法がある。 BackupRead関数を使う FindFirstStreamW関数, FindNextStreamW関数を使う (Windows Vista以降) NtQueryInformationFile関数を使う (非公開関数) 正攻法は1, 2で、調べた限りADSの読み書きを行う既存のC#ライブラリは、1のBackupRead/BackupWriteを使っている。 ところがどう言う訳か、BackupReadでは列挙されないストリームが存在しうる。dir /rやNirSoft AlternateStreamViewでは表示されるにも関わらずだ。NTFSによるアクセス権限の問題らしいが、詳しいことは分からない。 NtQueryInformationFileはアクセス権限を無視して情報を取得できるらしく、前述のdirやAlternateStreamViewはこのAPIを使っているのだろう。多分。 2の方法は試してないが、アクセス権を無視するオプションはないらしいので望み薄と思われる。 こちらの記事のC#でNtQueryInformationFileを使ったサンプルで、無事目的のADSが取得できることを確認。というわけで、非公開関数ではあるもののNtQueryInformationFileを使うのが確実っぽい。 参考サイト NTFS代替データストリーム(ADS)一覧取得 | Memo+ NTFS代替ストリーム | Netsphere Laboratories NTFS Alternate Streams: What, When, and How To Windows の謎を調べた - Neo's World 登 大遊 - Windows のファイルのコピーは、驚くほど奥が深い。 | Facebook .NET Matters: Iterating NTFS Streams | Microsoft Docs Enumerating Alternate Data Streams - CodeProject A Win32-Based Technique for Finding and Hashing NTFS Alternate Data Streams Comments Name E-Mail Website 人間の証明として、ボックス内の全ての文字を入力してください。 この項目は空のままにして下さい:Preview Comment blog/2021/2021-06-17.txt 最終更新: 2021-07-20 10:15by Decomo