Changeset 1700


Ignore:
Timestamp:
1/27/2010 4:03:41 AM (4 years ago)
Author:
lowjoel
Message:

Forward port from Eraser 6.0: Fixed crash when the process which is locking the file may not be accessible to the current user, resulting in a Win32Exception. Swallow it, we'll just not list the process.

Location:
trunk/eraser6
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser6

  • trunk/eraser6/Eraser.Manager/DirectExecutor.cs

    r1688 r1700  
    646646                        StringBuilder processStr = new StringBuilder(); 
    647647                        foreach (System.Diagnostics.Process process in processes) 
    648                             processStr.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, 
    649                                 "{0}, ", process.MainModule.FileName); 
     648                        { 
     649                            try 
     650                            { 
     651                                processStr.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, 
     652                                    "{0}, ", process.MainModule.FileName); 
     653                            } 
     654                            catch (System.ComponentModel.Win32Exception) 
     655                            { 
     656                            } 
     657                        } 
    650658 
    651659                        lockedBy = S._("(locked by {0})", processStr.ToString().Remove(processStr.Length - 2)); 
     
    695703                        new ProgressChangedEventArgs(step, 
    696704                            new TaskProgressChangedEventArgs(info.FullName, 0, 0))); 
    697  
    698                     //See if this is the root of a volume. 
    699                     bool isVolumeRoot = info.Parent == null; 
    700                     foreach (VolumeInfo volume in VolumeInfo.Volumes) 
    701                         foreach (string mountPoint in volume.MountPoints) 
    702                             if (info.FullName == mountPoint) 
    703                                 isVolumeRoot = true; 
    704  
    705                     //If the folder is a mount point, then don't delete it. If it isn't, 
    706                     //search for files under the folder to see if it is empty. 
    707                     if (!isVolumeRoot && info.Exists && info.GetFiles("*", SearchOption.AllDirectories).Length == 0) 
    708                         fsManager.DeleteFolder(info); 
     705                    fsManager.DeleteFolder(info); 
    709706                } 
    710707            } 
Note: See TracChangeset for help on using the changeset viewer.