2

ここに私のコードがあります、

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

Google で調べたところ、アプリのアクセス許可を次から変更する必要があることがわかりました 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

わかりました、私はケースを解決したと思います.各フォルダを繰り返し、それらの属性をチェックしてからリストに追加しました..うまくいっていると思います..ちょっと確認してください..

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 に答える
1

このフォルダには PDF ファイルはありません:

このSystem Volume Informationフォルダーは、システムの復元ツールがその情報と復元ポイントを格納するために使用する隠しシステム フォルダーです。( MSDN )

だからそれを無視してください。

確かに、GetFiles()ファイル/フォルダーを無視することはできないため、FindFirstFileなどに PInvoke する必要があります。検索を効果的に行うため。

于 2010-02-09T14:39:44.203 に答える
0

システム ボリューム情報フォルダーは、O/S 保護フォルダーです。管理アクセス権を持っている場合でも、アクセスすることはできません。エクスプローラー自体から試すことができます。(保護されたオペレーティング システム ファイルを表示するオプションを有効にする必要があります。)

于 2010-02-09T14:42:39.910 に答える