ByPassing系统文件权限VB.Net

时间:2014-08-08 11:33:25

标签: vb.net exception-handling unauthorizedaccessexcepti

我开始创建一个文件管理器,用于扫描用户通过vb.net中的 folderbrowserdialog 选择的文件夹,使用 GetFiles()使用 SearchOption.AllDirectories 的方法。我在扫描逻辑驱动器中的回收站文件夹时遇到 UnauthorizedAccessException ,而我看过像 WinRar R-Studio这样的软件扫描并显示每个目录,不会出现异常或错误。以下是我的代码:

Public Sub WriteExtentionsToFile()
    Try
        Title_Window.FolderBrowserDialog.ShowDialog()
        Dim Path As String = Title_Window.FolderBrowserDialog.SelectedPath

        'Getting FilesNames

        Dim FileNames As String() = GetFilesNames(Path)
        Title_Window.LblStatusBar.Text = "File Names Saved"
        Dim MaximumForProgressBar As Integer = FileNames.Length
        Title_Window.ToolStripProgressBar1.Maximum = MaximumForProgressBar
        Title_Window.ToolStripProgressBar1.Step = 1

        'Getting Extentions

        Dim ExtentionsList As New List(Of String)
        For Each item In FileNames
            ExtentionsList.Add(System.IO.Path.GetExtension(item))
        Next

        'Deleting Duplicate Extentions

        Dim NoDuplicateExtentionList As New List(Of String)
        Dim ExtentionReadFromFile As String() = ReadExtentionsFromFile()'Another Function in my Class Which Reads previously saved extentions in a file and store them in an array
        For Each item In ExtentionReadFromFile
            NoDuplicateExtentionList.Add(item)
        Next
        For Each E In ExtentionsList
            Dim LastIndexOfDot As Integer = E.LastIndexOf(".")
            E = E.Remove(0, LastIndexOfDot + 1)
            If NoDuplicateExtentionList.Contains(E.ToLower) = False Then
                NoDuplicateExtentionList.Add(E.ToLower)
                My.Computer.FileSystem.WriteAllText("d:\ExtentionsList.txt", E.ToString & vbCrLf, True)

            End If
        Next
        MessageBox.Show("Writing Process Completed", "Success")

    Catch ex As UnauthorizedAccessException
        Dim Buttons As MessageBoxButtons = MessageBoxButtons.AbortRetryIgnore
        Dim result As DialogResult
        MessageBox.Show(ex.ToString, "Access Denied", Buttons)
        If result = Windows.Forms.DialogResult.Ignore Then
          'What should be Done Here????
        ElseIf result = Windows.Forms.DialogResult.Abort Then
         'What should be Done Here????
        Else
         'What should be Done Here????
        End If
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try
End Sub

这个问题的解决方案应该是什么?这是关于通过FileIoPermission Class或其他东西获取权限吗?

0 个答案:

没有答案