This is a question of NTFS security, NTFS use and user rights, not programming.
A number of folders are protected from access by any user. Stuff like the root directory of the main partition (C:\
), both Programm directories, the Windows folder, etc. Often you still can read some of them, but do not expect being able to write them. You need to run the programm elevated to have any shoot of access to those folders. However this should not be such a case, as Users or Documents and Settings (depending on OS version) should be open at least to the top layer.
Another issue are Symbolic Links. They are basically redirects within the Filesystem, and are used for fallback names. On the one hand, you need to properly deal with them to resolve them to the real name. On the other hand, blindly itterating over symbolic links will get you into a infinite loop as sometimes symbolic links referer to the folder you find them in. My advise is to just ignore them for the beginning.
And course depending on what you really want to do with those folders and files, something pre-written like Robocopy would be the better thing to use.