Как составить поиск по каталогам что бы он обходил системные?
Самый простой вариант - сделать свой метод вместо SearchOption.AllDirectories, обходить все каталоги рекурсией и обходить исключения с помощью try-catch.
Тут Solution 3: www.codeproject.com/Questions/173054/Ignore-Unauth...
Вот целая тема с такими решениями: stackoverflow.com/questions/172544/ignore-folders-...
Повысить привелегии до административных. Хотя и в этом случае вы должны корректно обрабатывать отсутствие доступа к папке. Это нормальная ситуация.