C#/.NET Framework のファイルストリームは、NTFS代替ストリームに対応していない。
という事で、VisualC++/CLR にて、代替ストリームを読み書きするストリームをプラグインとして、作った。
プラグイン
VisualC++/CLR には「AnyCPU」というコンパイルができないので、
- Plugins\Win32\stdioFileC32.dll
- Plugins\Win64\stdioFileC64.dll
が実体だ
cat/TYPE コマンドの代替(代替ストリーム)
通常のファイル読み書きと同じで、ストリームの実体(ソース)を「コンソール(-LocalPort=0 or -RemotePort=0)」にして
- -LocalInputFileC
- -RemoteInputFileC
- -LocalOutputFileC
- -RemoteOutputFileC
を指定する
C:\>echo Hello > a.txt:hehehe C:\>dir a.txt 2017/06/05 15:56 0 a.txt 1 個のファイル 0 バイト C:\>type a.txt C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFileC a.txt:hehehe Hello
cat/TYPE の代替としての StreamRelay.NET.exe
cat/TYPE の代替としての StreamRelay.NET.exe