TreoNet Ответов: 2

Тот же VB. Чистый код, различный результат между windows 7 и windows 10


Уважаемый друг,

Часть моего кода всегда прекрасно работает под Windows 7, Теперь с Windows 10 не работает...
Код подсчитывает файлы и папки внутри внешнего жесткого диска, это же устройство используется для тестирования...

Public NDirs, NFiles As Integer



  Try

   NDirs = My.Computer.FileSystem.GetDirectories(My.Settings.BackupDrive, "*", 
   SearchOption.AllDirectories).Count
            
   NFiles = My.Computer.FileSystem.GetFiles(My.Settings.BackupDrive, "*.*", 
   SearchOption.AllDirectories).Count


  Catch ex As Exception


  Finally
    MsgBox("Total Files: " & NFiles.ToString & " / Folders: " & NDirs.ToString)

  End Try

Я не уверен, что это что-то о .Net Framework (4.0 на Proyect) или что-то еще, просто попробуйте много вариантов и не работает...

На Win7 получите правильные номера папок файлов, на Win10 просто 0/0.

Я читал какой-то пост на сайте, где говорилось о GetDirectories /Files не очень хороший вариант и очень медленный, так что можете дать мне некоторую ориентацию для лучшего способа?

Заранее спасибо.

Что я уже пробовал:

Также я стараюсь с каталогом.GetDirectories и used convinations в конце like .Count, LongCount, length и dont работают под Windows 10

Richard Deeming

Ваш код, вероятно, создает исключение, которое вы игнорируете.

Добавьте код к Catch блок для отображения сведений об исключении.

kmoorevs

На прошлой неделе вам дали два решения. У тебя что-нибудь получилось? После пары правильных ответов здесь без положительного ответа я дважды подумаю, прежде чем снова приложить какие-либо усилия.

2 Ответов

Рейтинг:
1

User 7429338

Windows 10 строже, чем Windows 7; вам нужно будет запустить приложение от имени администратора, чтобы получить доступ к внешнему диску.


Рейтинг:
1

kmoorevs

Попробуйте использовать класс DirectoryInfo, чтобы сначала установить каталог поиска, а затем вызвать в нем методы следующим образом:

Dim startDir As New DirectoryInfo(My.Settings.BackupDrive)

If startDir.Exists Then
      NDirs = startDir.GetDirectories("*", SearchOption.AllDirectories).Count
      NFiles = startDir.GetFiles("*", SearchOption.AllDirectories).Count
End If