2

这是我的代码,

Dim allFiles As FileInfo() = 
                        tempDir.GetFiles("*.pdf", SearchOption.AllDirectories)

我用谷歌搜索,发现我需要更改我的应用程序的权限 Project properties > View UAC Settings > and change level to level="requireAdministrator"

但它也不起作用。我发现了一些关于FileIOPermission类的东西,但不知道如何实现它。

==> 详细代码。

Dim tempDir As New DirectoryInfo(path)
        Dim FileDetails(4) As String
        Dim iTem As ListViewItem
        If (tempDir.Attributes <> FileAttributes.System) Then
            Dim allFiles As FileInfo() = tempDir.GetFiles("*.pdf", SearchOption.AllDirectories)
            Dim oneFIle As FileInfo
            For Each oneFIle In allFiles
                FileDetails(0) = oneFIle.Name()
                FileDetails(1) = oneFIle.FullName()
                FileDetails(2) = oneFIle.Length() / (1024 * 1024)
                FileDetails(2) = FileDetails(2).Remove(5)
                iTem = New ListViewItem(FileDetails)
                ListView1.Items.Add(iTem)
            Next
        End If

Path 是一个包含所需路径的字符串,在这种情况下G:\

4

3 回答 3

1

您不会在此文件夹中找到 PDF 文件:

System Volume Information文件夹是系统还原工具用来存储其信息和还原点的隐藏系统文件夹。( MSDN )

所以只是忽略它。

当然,GetFiles()不允许您忽略文件/文件夹,因此您必须 PInvoke 进入FindFirstFile等。有效地进行搜索。

于 2010-02-09T14:39:44.203 回答
1

好的,我想我解决了这个问题,我只是迭代了每个文件夹,检查了它们的属性,然后添加到列表中。我认为它正在工作。请检查一下。

Dim tempDir As New DirectoryInfo(path)
    Dim FileDetails(4) As String
    Dim iTem As ListViewItem
    Try
        Dim allFiles As FileInfo() = Nothing 
        For Each Directory In tempDir.GetDirectories()
            Try
                If (Directory.Attributes <> FileAttributes.System) Then
                    allFiles = Directory.GetFiles("*.pdf", SearchOption.AllDirectories)
                End If
                Dim oneFIle As FileInfo

                For Each oneFIle In allFiles
                    FileDetails(0) = oneFIle.Name()
                    FileDetails(1) = oneFIle.FullName()
                    FileDetails(2) = oneFIle.Length() / (1024 * 1024)
                    FileDetails(2) = FileDetails(2).Remove(5)
                    iTem = New ListViewItem(FileDetails)
                    ListView1.Items.Add(iTem)                        
                Next
            Catch ex As Exception

            End Try
        Next
    Catch ex As UnauthorizedAccessException

    End Try
于 2010-02-09T15:32:27.197 回答
0

系统卷信息文件夹是受操作系统保护的文件夹。即使您可能具有管理权限,您仍然无法访问它。您可以从 Explorer 本身尝试它。(需要启用选项以显示受保护的操作系统文件。)

于 2010-02-09T14:42:39.910 回答