好的,所以我正在尝试编写一个程序来查找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
答案 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