4

私の機能はほとんど標準的な検索機能です...以下に含めました。

関数には、Repart NTFS ポイントの除去を担当する 1 行のコードがあります。

if (attributes.ToString().IndexOf("ReparsePoint") == -1)

問題は、エラーが発生することです Access to the path 'c:\System Volume Information' is denied.

コードをデバッグしましたが、このディレクトリの実行時の属性は次のとおりです。

  System.IO.FileAttributes.Hidden 
| System.IO.FileAttributes.System 
| System.IO.FileAttributes.Directory

Windows 2008 サーバー マシンでこのコードを実行していますが、この失敗を解決するためにできることはありますか?

public void DirSearch(string sDir)
{
    foreach (string d in Directory.GetDirectories(sDir))
    {
        DirectoryInfo dInfo = new DirectoryInfo(d);
        FileAttributes  attributes = dInfo.Attributes;
        if (attributes.ToString().IndexOf("ReparsePoint") == -1)
        {
            foreach (string f in Directory.GetFiles(d, searchString))
            {
                //lstFilesFound.Items.Add(f);
                ListViewItem lvi;
                ListViewItem.ListViewSubItem lvsi;
                lvi = new ListViewItem();
                lvi.Text = f;
                lvi.ImageIndex = 1;
                lvi.Tag = "tag";
                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = "sub bugger";
                lvi.SubItems.Add(lvsi);

                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = d;//"C:\\Users\\Administrator\\Downloads\\MediaMonkey.GOLD.EDITION.v.3.0.2.1134.[Darkside].[Demonoid].[Grim.Reaper]";
                lvi.SubItems.Add(lvsi);

                listView1.Items.Add(lvi);
            }
            DirSearch(d);
        }
    }
}
4

4 に答える 4

18

質問に対する答えがわかりませんが、属性チェックを変更して、適切なビット演算を使用してください!

if (attributes.ToString().IndexOf("ReparsePoint") == -1)

... は ... のように正確に書かれています。

if ((attributes & FileAttributes.ReparsePoint) == 0)
于 2008-12-01T22:04:24.140 に答える
3

SYSTEM アカウント以外には、システム ボリューム情報にアクセスする権限はありません。そのため、ディレクトリの権限を変更してください。または、はるかに良い例外をキャッチして続行します。

于 2008-12-01T22:04:59.363 に答える
1

おそらく、この記事が役に立ちます (このフォルダーへのアクセス方法が説明されています)。

http://support.microsoft.com/kb/309531

絶望的な解決策は、try - catch です。

于 2008-12-01T22:08:38.640 に答える