Jeremy -
thanks for creating this tool. I wrote a Windows batch file to do this (was going to do it in WSH / JScript but it was actually easier, tho less robust in cmd batch) which I tested and works quite well. I opted to copy the source folder to the destination, rename the source folder then create the symbolic link (i.e. junction point in Micro$oft lingo). That way if for whatever reason the relocation causes issues all you have to do is delete the link and rename the source folder back to the original name.
I had no issues at all using that cmd file on items in the "Program Files" folder, but it would not work in the "Program Files (x86)" folder because the security policy prohibits renaming there, even for admins. I find that strange but not surprising, afterall it's Micro$oft we're talking about.
Mico$oft's security model is terrible. *nix has a much better model with the default policy of no access to anyone for anything and all access must be explicitly granted. Micro$oft suffers from the "daze of DOS" legacy policy where everything was wide open by default. As DOS evolved into generations of Windows additional security was added out of necessity, but it was constrained by legacy considerations. *nix systems were designed from the start with security in mind.
I much prefer *nix systems. They're more efficient, flexible and robust. If it weren't for the few apps I need like Dragon Dictate and the huge installed base of Windoze systems and their users that rely on them, I'd never boot windows again.
Although the symbolic link functionality is now built into the NTFS filesystem, which should allow the same flexibility as *nix systems have for filesystem space management, Micro$oft in their dictatorial "wisdom" has chosen not to provide the tools for end users to use symbolic links to relocate things easily according to user preferences. That approach does have the advantage however to standardize the location of things, which simplifies troubleshooting and maintenance.
That's the one thing about using symbolic links which is nice, since they work at the filesystem level and are transparent, they work for all but a few cases, such as user profile folders. It should work for that too, but that just tells me Micro$oft code is not engineered all that well.
Now that I've discovered your JunctionMaster tool I can retire my simple cmd script.
Thx again!