VB.NET directory.EnumerateFiles:拒绝访问路径X.

时间:2017-03-11 23:42:18

标签: vb.net vb.net-2010

好的,所以我正在尝试编写一个程序来查找C驱动器上的特定文件并获取其位置。但是以下代码不起作用!我已经研究了很多,并从GetFiles转到Directory.enumerateFiles。但是我继续遇到一个异常声称我没有访问权限,只是忽略了消息(关闭它/按ok)不继续搜索而是完全停止它,我需要一种绕过这个的方法,如果可能的话,所以如果一个目录如果可能的话,它将跳过它并在屏幕上没有错误的情况下导致异常。 目前清单文件设置为“requireAdministrator”,所以我知道这不是问题。以管理员身份运行VB无法解决,并且以管理员身份运行已编译的文件也不起作用。希望有人可以帮忙! 注意:由于硬件限制和操作系统,我使用的是Visual Basic 2010 Express并且没有计划升级到newever版本。

Imports System.IO

Public Class GuardianScanner

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox1.ReadOnly = True
    TextBox1.ScrollBars = ScrollBars.Vertical

    Button1.Enabled = False
    TextBox1.AppendText(Environment.NewLine & "[INFO] Please wait while scanning. This can take a few minutes")
    Try

        For Each file As String In Directory.EnumerateFiles("C:\", "GodlyNorris.exe", SearchOption.AllDirectories)

                TextBox1.AppendText(Environment.NewLine & "[INFO] Found virus: AUTONORRIS: " & file.ToString)





        Next file

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

1 个答案:

答案 0 :(得分:3)

我尝试将此作为评论发布,但它非常混乱。这应该可以工作,基本上它会尝试在C驱动器的每个子目录中创建一个目录,如果它因未经授权的访问异常而失败,它会移动到下一个子目录。

For Each directory In New DirectoryInfo("C:\").GetDirectories()
    Try
        For Each file In directory.GetFiles("*", SearchOption.AllDirectories)
            Try
                TextBox1.Text += Environment.NewLine + file.Name
            Catch ex As Exception
                'MsgBox(ex.Message)
                Continue For
            End Try
        Next
    Catch ex As Exception
        'MsgBox(ex.Message)
        Continue For
    End Try
Next