DOBON.NETプログラミング道掲示板

No35565 の記事


■35565 / )  Re[1]: GetDirectoriesでルートを指定するとエラーになる
□投稿者/ Azulean 大御所(541回)-(2023/12/17(Sun) 20:39:55)
  • アイコンNo35563に返信(DISPさんの記事)
    > Dim sub_Folders As String() = System.IO.Directory.GetDirectories(Me.OutputTextBox.Text, "*", System.IO.SearchOption.AllDirectories)
    > でG:\ドライブ直下のフォルダ一覧を取得しようとしたのですが、
    > ------------------------------------------------
    > System.UnauthorizedAccessException
    > HResult=0x80070005
    > Message=パス 'G:\System Volume Information' へのアクセスが拒否されました。
    (略)
    > というエラーが出てしまいます。

    そういうものです。
    ドライブのルートには、システム用に隠されたフォルダーが存在しています。
    このフォルダーを含めて「すべてサブフォルダーを取得」と実行すると、アクセス権がないのでエラーになります。

    > GドライブはUSB接続のSSDドライブ、Dドライブは内蔵HDDです。両方ともNTFSフォーマットです。
    > 外部ドライブのときは何か指定とか必要なのでしょうか。

    G:\ だろうと、D:\ だろうと、C:\ だろうと、同様にエラーが起きるはずです。
    このため、ドライブルートからまとめて AllDirectories を実行するのは避け、TopDirectoryOnly を用いて、例外をキャッチしながら列挙することを考えてください。
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -