Я пробовал эти коды, но получаю не отвечающий
Ну да, вы очень много работали над потоком пользовательского интерфейса, конечно, пользовательский интерфейс не отвечает. Вместо этого поместите его в фоновый поток и пусть он взаимодействует с пользовательским интерфейсом через публикацию сообщений (BeginInvoke
и т. Д.). список!
Опять же, да, вы исключаете системный диск в своем запросе, который предположительно C:\
if (drive.Name != Path.GetPathRoot(Environment.SystemDirectory))