First, call Directory.GetFiles for root directory. Catch UnauthorizedAccessException - if none, you have full access.
If caught - call the function for each subdir recursively, catch the exception, if caught - add such dir to list.
Write a recursive function with external list for forbidden dirs