StrmExt.dll on x64 Windows

A Vanity License Plate Which Reads "64 Bits"     Some years ago it was decided at Microsoft that their (then) new filesystem would have something which would become known as Alternate Data Streams. I won't go into too much detail as there are already well-written discussions of what ADSes are and what they can be used for. Interested persons should consult with Google. Suffice it to say that ADSes are largely unknown outside of geekdom and fairly uncommon topics of discussion even among geeks. In fact, there's no built-in tool for Windows that even allows you to see ADSes (correction: under Windows Vista and newer the dir command added a new switch to show ADSes,) let alone manipulate them unless you happen to know the exact name of the stream you're looking for and it's impossible to find this out without some extra tool.

     There are a number of these tools out there. Some of them come from Microsoft directly like SysInternals' Streams.exe utility. Even so, since ADS use is practically non-existant these tools are all-too-often left behind when the Next Big Thing changes how things work in Windows. In my case, the tool was the StrmExt Explorer extension from Microsoft and the Big New Thing was 64 bit Windows.

     The StrmExt Explorer extension added a "Streams" tab to the standard File Properties window. I like it because it's so lightweight and because I don't need to start up another program just to look at ADSes; Explorer is always running anyway.

     The StrmExt.dll file available from Microsoft bears a timestamp of February 4, 2000 (at 5:01PM) which means that it probably hasn't been updated or changed at all in more that 11 years. At the time this program was written Windows XP was still more than a year and a half from being released and everyone was using either a DOS-based version of Windows (like Windows 98 or Windows ME) or Windows NT. Windows 2000 was released less than two weeks after this DLL was compiled.

     Much has changed since then. At that time personal computers were just finishing the leap from 16 bits to 32 bits and the first x86-compatible 64-bit version of Windows was more than 5 years in the future. It's only natural that the author of this DLL didn't plan for dealing with a 64 bit system.

     So, as many power users have likely done, I faced this problem: I just installed a 64 bit version of Windows on my shiny new computer but some of my favorite gizmos didn't work anymore. All the system software in 64 bit versions of Windows are native 64 bit applications, which includes Windows Explorer, and 64-bit Explorer does not like 32-bit extensions (another of my favorite Explorer extensions, MD5 Context Menu, suffered the same fate.)

     Luckily, the archive containing the DLL also included its source, a rarity among Microsoft products, even their free tools. It just so happens that I have a copy of Visual Studio 2005 laying around, so I tried loading up the circa 2000 project file. Lo and behold it worked, VS converted everything to a more modern project file and I was left with a blinking cursor in the IDE. At this point I should note that I don't actually know how to use Visual Studio. I prefer different languages and IDE's than the ones Microsoft provides (just a preference.)

     So, I started mucking around in the menus* and found the Build Configuration Manager, where I was able to change the platform from x86 to x64. From there it was just a matter of building the project and registering the resulting DLL as an Explorer extension.

     For reasons unknown to me, though, only the "Debug" configuration would compile for me. As a result, the 64 bit version I made is several times larger than its original 32 bit counterpart. You can downoad the 64 bit version here.

 

*It is a scientific fact that 94.68% of all computer-related troubles can be solved by randomly clicking in menus.

 

Write a comment

  • Required fields are marked with *.

andrew
Posts: 3
Comment
Re: strmext 64 on directories
Reply #8 on : Fri April 20, 2012, 17:59:33
It stands to reason that directories aren't supported by this tool considering its age. The /r argument to the dir command, for example, wasn't added until Windows Vista, nearly a decade after this tool was written.

It should be possible for someone with sufficient knowledge (i.e. not me) to take the source code and add this feature, though.
guenther
Posts: 5
Comment
strmext 64 on directories
Reply #7 on : Wed April 18, 2012, 01:55:13
maybe I should play round more with the registry, but currently:

I can add a stream also to a directory by e.g.
- echo >> dirname:streamname.ext

it is shown by dir /r

But there is no streams tab at the properties of the directory
clsturgeon
Posts: 5
Comment
Re: Editing Streams
Reply #6 on : Thu February 16, 2012, 13:41:44
StrmExt has a few bugs. Previously it had been mentioned that answering no to the delete button still deletes the stream. However, more important is the nasty behaviour of the entire property sheet. Fire up two instances of the property sheet, from 2 different files at the same time. Click on Refresh (on your first window after displaying the 2nd window) and watch the nasty behaviour of sharing data between the two windows. Anyone have an idea on how to fix this (source code can be downloaded)? Adding a stream with multiple sheets shown will produce some very unwanted behaviour.
andrew
Posts: 3
Comment
Re: Editing Streams?
Reply #5 on : Mon February 13, 2012, 19:19:55
In order to edit streams using the StrmExt tool, you must place the RWStream.vbs file in your system path (for example, C:\Windows\system32.)
jace
Posts: 5
Comment
Editing Streams?
Reply #4 on : Fri February 10, 2012, 18:32:46
i see the "Edit Streams..." button doesn't work. Sigh. Any ideas there?
jace
Posts: 5
Comment
Thank you for this
Reply #3 on : Fri February 10, 2012, 18:25:37
i'm trying to see if i can make use of ADS in Vista but i'm on 64-bit... so thank you!
andrew
Posts: 3
Comment
Re:
Reply #2 on : Wed January 11, 2012, 15:54:24
@guenther thanks for the suggestion!
guenther
Posts: 5
Comment
aditional hints
Reply #1 on : Wed January 11, 2012, 09:11:43
pls add following info to the readme of strmext 64

you must run the regsrv32 from the syswow64 directory , and you must run a cmdline as admin
_______________________________________________
type cmd into the search fiedld of win7-64 and hit ctl-shift-enter ( not only enter) accept that "this program" - the cmdline - will be able to modify your computer, this put the cmdline to admin mode
then cd to %sysroot%\syswow64
then execute the regsrv32 as in the readme.

besides that, "Thank you very much" for creating the 64 bit tool, I am glad, as I missed this function.
Last Edit: January 11, 2012, 15:38:02 by andrew