本帖最后由 wwm402654282 于 2010-08-20 20:00:58 编辑

解决方案 »

  1.   

    public void FindFile(string dirPath) 

    DirectoryInfo Dir=new DirectoryInfo(dirPath);
    try
    {
    foreach(DirectoryInfo d in Dir.GetDirectories() 
    {
    FindFile(Dir+d.ToString());
    }
    foreach(FileInfo f in Dir.GetFiles("*.*")) 
    {
    }
    }
    catch(Exception e)
    {
    MessageBox.Show(e.Message);
    }}
    string[] files = Directory.GetDirectories("D:\\", "*.*", SearchOption.AllDirectories);
    系统文件夹
    private DirectoryInfo[] GetDirList(DirectoryInfo dirInfo)
    {
        if (dirInfo == null || !dirInfo.Exists)
            return null;
        DirectoryInfo[] dirInfos = null;
        try
        {
            //一般情况下,按正常方法获取目录列表
            dirInfos = dirInfo.GetDirectories();
        }
        catch { }
        //如果不为空,那么说明目录列表成功,否则需要添加安全访问规则
        if (dirInfos != null)
            return dirInfos;    //新建账户安全访问规则
        FileSystemAccessRule fsRule = new FileSystemAccessRule(System.Environment.UserName
            , FileSystemRights.Modify, AccessControlType.Allow);    //添加安全访问规则
        DirectorySecurity dirSecurity = dirInfo.GetAccessControl();
        dirSecurity.AddAccessRule(fsRule);
        dirInfo.SetAccessControl(dirSecurity);    try
        {
            dirInfos = dirInfo.GetDirectories();
        }
        catch (Exception ex)
        {
            MessageBox.Show("无法访问文件夹:" + dirInfo.FullName + "\n" + ex.Message);
        }
        //移除安全访问规则
        dirSecurity = dirInfo.GetAccessControl();
        dirSecurity.RemoveAccessRule(fsRule);
        dirInfo.SetAccessControl(dirSecurity);
        return dirInfos;
    }
      

  2.   

    string[] files = Directory.GetDirectories("D:\\", "*.jpg", SearchOption.AllDirectories);