0

Visual Studio 2008 (vb.net) 単純なアニウイルスを作成しましたが、次のコードでフル スキャンを作成すると:

FolderBrowserDialog1.SelectedPath = ("C:\")
    'first scan:************************************
    Try

        For Each strDir As String In
        System.IO.Directory.GetDirectories(FolderBrowserDialog1.SelectedPath)

            For Each strFile As String In System.IO.Directory.GetFiles(strDir)

                ListBox1.Items.Add(strFile)

            Next
        Next

        'Start the timer:

    Catch ex As Exception
    End Try

    Timer1.Start()`

最初の6つのファイルをスキャンするだけです... Windowsフォルダのアクセス許可の問題だと思います(Windows - Program Files ...など) では、どうすれば修正できますか?

4

2 に答える 2

2

Console.WriteLine(ex)スローされた例外を確認できるように、catchブロックにを入れます。あなたはおそらくあなたの問題を見るでしょう。最も可能性の高い権限。

于 2012-04-04T12:37:20.787 に答える
1

次のことを試すことができます。

For Each strFile As String In System.IO.Directory.GetFiles(strDir, "*", IO.SearchOption.AllDirectories)

編集:

このスレッドで見つかった最後の解決策を試すことができます: http://www.vbforums.com/showthread.php?t=624969

私はこれを自分で試しましたが、非常に遅くなりましたが、うまくいきました。

Public Class Form1

    Private Sub foo(ByVal aDir As String)
        Try

            Dim di As New IO.DirectoryInfo(aDir)
            Dim aryFiles() As IO.FileInfo = di.GetFiles("*.*")
            Dim aryDirs() As IO.DirectoryInfo = di.GetDirectories()

            For Each fi As IO.FileInfo In aryFiles
                rslts.Add(fi.FullName)
            Next

            For Each d As IO.DirectoryInfo In aryDirs
                foo(d.FullName)
            Next

        Catch ex As Exception
            'Stop 'the catch should be more specific
        End Try

    End Sub

    Dim rslts As List(Of String)

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        rslts = New List(Of String)
        foo("C:\")
        ListBox1.Items.Clear()
        ListBox1.Items.AddRange(rslts.ToArray)
     End Sub
End Class

あなたのソリューションは基本的に、最初に見つかったフォルダーをループしてそこで停止するようです。このソリューションは、開始場所に基づいてすべてのファイルとフォルダーを再帰的に処理するため、少し異なります。

于 2012-04-04T12:10:36.850 に答える