Joel said:
Thanks for reporting this: I'm looking at the code again now. I don't remember changing the behaviour, but I'll let you know when I got more information on my hands.
Just to provide a bit more information... In the end I must have run like 20 tests, trying to see what it would follow, junctions or symlinks, and whether it mattered if there were other contents in the directory with the junction or symlink, and whether it mattered if the target of the reparse point was on a remote drive. And in my tests it wiped the content on local or remote (on other drives) folders pointed to by junctions or symlinks. But I may have observed an exception. My tests were generally of the sort I videoed:
c:\temp\a\a.txt
c:\temp\b\junction_to_a
I would erase b and it would erase b and its contents including everything inside of a (leaving directory a, but wiping its timestamp).
But I believe I did a test where the contents looked like:
c:\temp\a\a.txt
c:\temp\b\symlink_to_a
c:\temp\b\some_other_file.txt
And in that situation with a symlink I think it left directory a alone. I think I repeated the test with a junction and it wiped everything in directory a. I'm sorry I am not 100% sure of the details, I was focused on trying to understand what data of mine might have been wiped out inadvertently and not debugging your program.
A separate important note... The contents I had been erasing were an external drive backup of the files from "C:\Users" which includes quite a few junctions by way of Microsoft install, as well as quite a few symlinks (and possibly a junction or two) I created within my user's desktop, documents, etc. My erasing was interrupted repeatedly by access issues where I had to change ownership (the backup was of the current machine but made on another machine because my drive was failing and I wanted an emergency backup). I then observed that some of the junctions were not pointing relative but were pointing at the live, main drive. I got paranoid and tested Eraser's behavior with junctions/symlinks. I spent the entire day yesterday diffing and rediffing my current drive against a recent backup to see what was erroneously erased/wiped and the unexpected result I found (given the tests) was: nothing. Either the numerous access issues let me become paranoid before Eraser had a chance to traverse a folder with junctions/symlinks, or (far more likely, based on how much content was erased) Eraser did not follow a symlink or possibly a junction, at least not one leading to the main drive. The directories it did wipe were much more likely to contain symlinks, because that's what I create by default and the directories wiped were mostly not Windows-install created. The explanation could relate to the test I did with a directory which has a symlink and another piece of content which for some reason prevented Eraser from following the symlink.
Anyway, very long post, but figured some of the details might help shed light on the logic that might be going wrong.