Alternate Data Streams Shell Help

Table of contents


1. Introduction

Alternate Data Streams Shell is the utility for working with NTFS alternate data streams. It represents the streams as files and exposes its functions through the Windows shell facilities.

The user of the utility is assumed to know what the alternate data streams are.

Back to top


2. Installation and Removal

Administrative rights are required to perform installation and removal.

Automatic Installation

Use the provided installer to install and remove the product. Uninstallation preserves the existing stream links.

Manual Installation

Copy the product's file to desired location and register it with the regsvr32 utility:

regsvr32 adsshell-<ver>-<arch>.dll

To uninstall the product, run regsvr32 with the -u option:

regsvr32 -u adsshell-<ver>-<arch>.dll

then delete the file. You may need to logoff prior to deleting as the shell extension modules are usually locked by shell.

Back to top


A file representing a stream is called "stream link". It has the extension ".adslnk" (which is not shown in Windows Explorer) and it has the same name as the stream it points to does.

If a stream link points to existing stream then it has the green arrow icon. If it points to non-existing stream then it has crossed red circle icon.

Location

The stream links are located in the directory named filename_streams, where filename is the name of the host file containing streams. The streams directory and the host file are located in the same directory.

The drive root directories (such as 'C:\') are exceptions: their stream links are located in '_streams' directory which in turn is located in the drive root directory. For example, the links for the streams of 'C:\' are located in 'C:\_streams'.

Encoded stream names

When the stream name contains characters that are not allowed in file names, such characters are encoded in the link name as %xx where xx is the hexadecimal code of a character. For example, character '?' is encoded as %3f. The percent character itself is encoded too as %25.

The tooltip window of the stream link shows decoded name of a stream, its size in bytes and relative path to its host file.

The screenshot below shows the sample streams directory for the host file named "File with streams.txt" which has four streams. One of the links points to a stream with encoded name and the other points to non-existing stream.

Back to top


4. Discovering Streams

The utility searches for the streams in the selected files and directories. It does not recurse into the directories.

If any of the selected files or directories contains alternate data streams then the context menu will show the Create Streams Folder command.

This command creates streams directory for the file and places its stream links there.

If context menu is invoked with Shift key pressed then the command appears in the menu regardless of the presence of the streams.

Back to top


5. Viewing Streams Content

Context menu of a stream link has Open Stream command which tries to open a stream using Windows shell file type associations. For example, if stream name ends with ".txt" then opening the stream starts Notepad loaded with the stream's content. Notepad is capable of reading and writing streams, while other programs may not be able to do this.

The content of a stream may be copied to regular file with Copy Stream To File command. The file will have the same name as the stream link does.

Back to top


6. Writing Streams Content

The source of stream content are the files or other streams. If the source file is the stream link, then the content of a stream is the actual source, not the content of the link.

Using host file context menu

When clipboard contains the files then the context menu of each file and directory has Paste To Streams command. This command writes the content of the files in clipboard to the streams of the target files, creating one stream per source file in each target file. Each stream will have the same name as its source file does. Executing the command with the Shift key pressed will create stream links for each created stream.

Using stream link context menu

Paste from clipboard

When clipboard contains single file then the context menu of the stream links has Paste command. Executing this command writes the content of the file in clipboard to the selected stream.

Create and open empty stream

If the link points to non-existing stream then the link menu has Create And Open Stream command. This command creates an empty stream and opens it using shell file type associations as described in Viewing Streams Content.

New stream links can be created using File > New > Alternate Data Stream Link menu.

Using drag-and-drop

Dropping a file to a stream link writes the content of the file to the stream. If Shift key is pressed then the source file or stream is deleted.

Back to top


7. Deleting Streams

Context menu of the stream links has Delete Stream command. This command deletes the stream from the host file. Executing the command with the Shift key pressed will also delete the stream links.

Back to top


8. Wiping Out

Alternate Data Streams Shell installs disk cleaner which is accessible through standard Disk Cleanup utility. It allows to delete all stream links on selected drive. Cleaning preserves the streams and stream directories.

Back to top


9. Version History

version 1.0.3 released 13-Aug-2009
Added support for drive root directories (such as 'C:\')
version 1.0 released 21-Jul-2009
First release

Back to top


10. Disclaimer

The software is provided "AS IS" without any warranty, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The author will not be liable for any special, incidental, consequential or indirect damages due to loss of data or any other reason.

Back to top