Gracias ecfisa,
el codigo hace justo lo que necesitaba, mi unico inconveniente es que ambos codigos me leen sin problemas cuando pongo una unidad (E:\\), pero cuando pongo (E:\\LOGS\\) osea una unidad + "cualquier carpeta", me manda un error y no termina mi programa, lo solucione con un try{}catch(...){} cuando llamo la función, pero tratare de arreglarlo sin necesidad de un try-catch, veo que podria ser algun problema al momento de leer alguna carpeta especifica dentro de una unidad y como hay otras carpetas genera ese error, pero en fin es lo de menos.
Te agradesco por la ayuda.