这是我的代码,
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:\
答案 0 :(得分:1)
您将无法在此文件夹中找到PDF文件:
System Volume Information
文件夹是系统还原工具用于存储其信息和还原点的隐藏系统文件夹。 (MSDN)
所以请忽略它。
当然,GetFiles()
不允许您忽略文件/文件夹,因此您必须将PInvoke转换为FindFirstFile等。有效地进行搜索。
答案 1 :(得分: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
答案 2 :(得分:0)
系统卷信息文件夹是受O / S保护的文件夹。即使您可能具有管理访问权限,您仍然无法访问它。您可以从资源管理器本身尝试。 (需要启用选项以显示受保护的操作系统文件。)