Changeset 2036


Ignore:
Timestamp:
05/04/10 01:20:40 (4 years ago)
Author:
lowjoel
Message:

Split the ErasureTarget?.cs file into the ErasureTarget? abstract base class, and implement the ErasureTarget? abstract base class in the DefaultPlugins? library.

Location:
trunk/eraser
Files:
2 added
16 edited
9 moved

Legend:

Unmodified
Added
Removed
  • trunk/eraser/Eraser.DefaultPlugins/Eraser.DefaultPlugins.csproj

    r1980 r2036  
    8383    <Compile Include="ErasureMethods\VSITR.cs" /> 
    8484    <Compile Include="ErasureMethods\RCMP_TSSIT_OPS_II.cs" /> 
     85    <Compile Include="ErasureTargets\File.cs" /> 
     86    <Compile Include="ErasureTargets\FileErasureTargetSettings.cs"> 
     87      <SubType>UserControl</SubType> 
     88    </Compile> 
     89    <Compile Include="ErasureTargets\FileErasureTargetSettings.Designer.cs"> 
     90      <DependentUpon>FileErasureTargetSettings.cs</DependentUpon> 
     91    </Compile> 
     92    <Compile Include="ErasureTargets\FolderErasureTargetSettings.cs"> 
     93      <SubType>UserControl</SubType> 
     94    </Compile> 
     95    <Compile Include="ErasureTargets\FolderErasureTargetSettings.Designer.cs"> 
     96      <DependentUpon>FolderErasureTargetSettings.cs</DependentUpon> 
     97    </Compile> 
     98    <Compile Include="ErasureTargets\UnusedSpaceErasureTargetSettings.cs"> 
     99      <SubType>UserControl</SubType> 
     100    </Compile> 
     101    <Compile Include="ErasureTargets\UnusedSpaceErasureTargetSettings.Designer.cs"> 
     102      <DependentUpon>UnusedSpaceErasureTargetSettings.cs</DependentUpon> 
     103    </Compile> 
    85104    <Compile Include="FileSystems\Fat.cs" /> 
    86105    <Compile Include="FileSystems\Ntfs.cs" /> 
     
    136155      <SubType>Designer</SubType> 
    137156    </EmbeddedResource> 
     157    <EmbeddedResource Include="ErasureTargets\FileErasureTargetSettings.resx"> 
     158      <DependentUpon>FileErasureTargetSettings.cs</DependentUpon> 
     159    </EmbeddedResource> 
     160    <EmbeddedResource Include="ErasureTargets\FolderErasureTargetSettings.resx"> 
     161      <DependentUpon>FolderErasureTargetSettings.cs</DependentUpon> 
     162    </EmbeddedResource> 
     163    <EmbeddedResource Include="ErasureTargets\UnusedSpaceErasureTargetSettings.resx"> 
     164      <DependentUpon>UnusedSpaceErasureTargetSettings.cs</DependentUpon> 
     165    </EmbeddedResource> 
    138166    <EmbeddedResource Include="SettingsForm.it.resx"> 
    139167      <DependentUpon>SettingsForm.cs</DependentUpon> 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FileErasureTargetSettings.Designer.cs

    r2027 r2036  
    2020 */ 
    2121 
    22 namespace Eraser.Manager 
     22namespace Eraser.DefaultPlugins 
    2323{ 
    2424    partial class FileErasureTargetSettings 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FileErasureTargetSettings.cs

    r2024 r2036  
    2828using System.Text; 
    2929using System.Windows.Forms; 
     30 
     31using Eraser.Manager; 
    3032using Eraser.Util; 
    3133 
    32 namespace Eraser.Manager 
     34namespace Eraser.DefaultPlugins 
    3335{ 
    3436    public partial class FileErasureTargetSettings : UserControl, IErasureTargetConfigurer 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTargetSettings.Designer.cs

    r2027 r2036  
    2020 */ 
    2121 
    22 namespace Eraser.Manager 
     22namespace Eraser.DefaultPlugins 
    2323{ 
    2424    partial class FolderErasureTargetSettings 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTargetSettings.cs

    r2024 r2036  
    2929using System.Windows.Forms; 
    3030 
     31using Eraser.Manager; 
    3132using Eraser.Util; 
    3233 
    33 namespace Eraser.Manager 
     34namespace Eraser.DefaultPlugins 
    3435{ 
    3536    public partial class FolderErasureTargetSettings : UserControl, IErasureTargetConfigurer 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTargetSettings.Designer.cs

    r2027 r2036  
    2020 */ 
    2121 
    22 namespace Eraser.Manager 
     22namespace Eraser.DefaultPlugins 
    2323{ 
    2424    partial class UnusedSpaceErasureTargetSettings 
  • trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTargetSettings.cs

    r2024 r2036  
    2929using System.Windows.Forms; 
    3030using System.IO; 
     31 
     32using Eraser.Manager; 
    3133using Eraser.Util; 
    3234using Eraser.Util.ExtensionMethods; 
    3335 
    34 namespace Eraser.Manager 
     36namespace Eraser.DefaultPlugins 
    3537{ 
    3638    public partial class UnusedSpaceErasureTargetSettings : UserControl, IErasureTargetConfigurer 
  • trunk/eraser/Eraser.DefaultPlugins/Plugin.cs

    r1983 r2036  
    3838 
    3939            //Then register the erasure methods et al. 
    40             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Gutmann());          //35 passes 
    41             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new GutmannLite());      //10 passes 
    42             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new DoD_EcE());          //7 passes 
     40            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Gutmann());              //35 passes 
     41            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new GutmannLite());          //10 passes 
     42            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new DoD_EcE());              //7 passes 
    4343            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new RCMP_TSSIT_OPS_II());    //7 passes 
    44             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Schneier());         //7 passes 
     44            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Schneier());             //7 passes 
    4545            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new VSITR());                //7 passes 
    4646            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new DoD_E());                //3 passes 
    4747            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new HMGIS5Enhanced());       //3 passes 
    48             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new USAF5020());         //3 passes 
     48            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new USAF5020());             //3 passes 
    4949            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new USArmyAR380_19());       //3 passes 
    5050            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new GOSTP50739());           //2 passes 
    5151            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new HMGIS5Baseline());       //1 pass 
    52             ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Pseudorandom());     //1 pass 
     52            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new Pseudorandom());         //1 pass 
    5353            EraseCustom.RegisterAll(); 
    5454            ManagerLibrary.Instance.ErasureMethodRegistrar.Add(new FirstLast16KB()); 
     
    6060            ManagerLibrary.Instance.FileSystemRegistrar.Add(new Fat32FileSystem()); 
    6161            ManagerLibrary.Instance.FileSystemRegistrar.Add(new NtfsFileSystem()); 
     62 
     63            ManagerLibrary.Instance.ErasureTargetRegistrar.Add(new FileTarget()); 
     64            ManagerLibrary.Instance.ErasureTargetRegistrar.Add(new FolderTarget()); 
     65            ManagerLibrary.Instance.ErasureTargetRegistrar.Add(new RecycleBinTarget()); 
     66            ManagerLibrary.Instance.ErasureTargetRegistrar.Add(new UnusedSpaceTarget()); 
    6267        } 
    6368 
  • trunk/eraser/Eraser.DefaultPlugins/Strings.en.resx

    r1871 r2036  
    193193    <value>{0} did not have its cluster tips erased because of the following error: {1}</value> 
    194194  </data> 
     195  <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
     196    <value>The file {0} was not erased as the file does not exist.</value> 
     197  </data> 
     198  <data name="Erasing files..." xml:space="preserve"> 
     199    <value>Erasing files...</value> 
     200  </data> 
     201  <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
     202    <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 
     203  </data> 
     204  <data name="The task was cancelled." xml:space="preserve"> 
     205    <value>The task was cancelled.</value> 
     206  </data> 
     207  <data name="Unused disk space ({0})" xml:space="preserve"> 
     208    <value>Unused disk space ({0})</value> 
     209  </data> 
     210  <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
     211    <value>The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation.</value> 
     212  </data> 
     213  <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     214    <value>The program does not have the required permissions to erase the unused space on disk.</value> 
     215  </data> 
     216  <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
     217    <value>This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern.</value> 
     218  </data> 
     219  <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
     220    <value>The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern.</value> 
     221  </data> 
     222  <data name="Searching for files' cluster tips..." xml:space="preserve"> 
     223    <value>Searching for files' cluster tips...</value> 
     224  </data> 
     225  <data name="Erasing cluster tips..." xml:space="preserve"> 
     226    <value>Erasing cluster tips...</value> 
     227  </data> 
     228  <data name="Erasing unused space..." xml:space="preserve"> 
     229    <value>Erasing unused space...</value> 
     230  </data> 
     231  <data name="Old resident file system table files" xml:space="preserve"> 
     232    <value>Old resident file system table files</value> 
     233  </data> 
     234  <data name="Removing temporary files..." xml:space="preserve"> 
     235    <value>Removing temporary files...</value> 
     236  </data> 
     237  <data name="Erasing unused directory structures..." xml:space="preserve"> 
     238    <value>Erasing unused directory structures...</value> 
     239  </data> 
     240  <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
     241    <value>Could not erase files and subfolders in {0} because {1}</value> 
     242  </data> 
     243  <data name="Removing folders..." xml:space="preserve"> 
     244    <value>Removing folders...</value> 
     245  </data> 
     246  <data name="Recycle Bin" xml:space="preserve"> 
     247    <value>Recycle Bin</value> 
     248  </data> 
     249  <data name="Emptying recycle bin..." xml:space="preserve"> 
     250    <value>Emptying recycle bin...</value> 
     251  </data> 
     252  <data name="Invalid file path" xml:space="preserve"> 
     253    <value>Invalid file path</value> 
     254  </data> 
     255  <data name="Invalid folder path" xml:space="preserve"> 
     256    <value>Invalid folder path</value> 
     257  </data> 
     258  <data name="The path you selected is invalid." xml:space="preserve"> 
     259    <value>The path you selected is invalid.</value> 
     260  </data> 
    195261  <data name="The custom erasure method can only comprise passes containing constant or random passes" xml:space="preserve"> 
    196262    <value>The custom erasure method can only comprise passes containing constant or random passes</value> 
  • trunk/eraser/Eraser.DefaultPlugins/Strings.it.resx

    r1871 r2036  
    193193    <value>Non sono stati puliti i cluster tips di {0} per il seguente errore: {1}</value> 
    194194  </data> 
     195  <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
     196    <value>(Untranslated)</value> 
     197  </data> 
     198  <data name="Erasing files..." xml:space="preserve"> 
     199    <value>(Untranslated)</value> 
     200  </data> 
     201  <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
     202    <value>(Untranslated)</value> 
     203  </data> 
     204  <data name="The task was cancelled." xml:space="preserve"> 
     205    <value>(Untranslated)</value> 
     206  </data> 
     207  <data name="Unused disk space ({0})" xml:space="preserve"> 
     208    <value>(Untranslated)</value> 
     209  </data> 
     210  <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
     211    <value>(Untranslated)</value> 
     212  </data> 
     213  <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     214    <value>(Untranslated)</value> 
     215  </data> 
     216  <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
     217    <value>(Untranslated)</value> 
     218  </data> 
     219  <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
     220    <value>(Untranslated)</value> 
     221  </data> 
     222  <data name="Searching for files' cluster tips..." xml:space="preserve"> 
     223    <value>(Untranslated)</value> 
     224  </data> 
     225  <data name="Erasing cluster tips..." xml:space="preserve"> 
     226    <value>(Untranslated)</value> 
     227  </data> 
     228  <data name="Erasing unused space..." xml:space="preserve"> 
     229    <value>(Untranslated)</value> 
     230  </data> 
     231  <data name="Old resident file system table files" xml:space="preserve"> 
     232    <value>(Untranslated)</value> 
     233  </data> 
     234  <data name="Removing temporary files..." xml:space="preserve"> 
     235    <value>(Untranslated)</value> 
     236  </data> 
     237  <data name="Erasing unused directory structures..." xml:space="preserve"> 
     238    <value>(Untranslated)</value> 
     239  </data> 
     240  <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
     241    <value>(Untranslated)</value> 
     242  </data> 
     243  <data name="Removing folders..." xml:space="preserve"> 
     244    <value>(Untranslated)</value> 
     245  </data> 
     246  <data name="Recycle Bin" xml:space="preserve"> 
     247    <value>(Untranslated)</value> 
     248  </data> 
     249  <data name="Emptying recycle bin..." xml:space="preserve"> 
     250    <value>(Untranslated)</value> 
     251  </data> 
     252  <data name="Invalid file path" xml:space="preserve"> 
     253    <value>(Untranslated)</value> 
     254  </data> 
     255  <data name="Invalid folder path" xml:space="preserve"> 
     256    <value>(Untranslated)</value> 
     257  </data> 
     258  <data name="The path you selected is invalid." xml:space="preserve"> 
     259    <value>(Untranslated)</value> 
     260  </data> 
    195261  <data name="The custom erasure method can only comprise passes containing constant or random passes" xml:space="preserve"> 
    196262    <value>Il metodo di pulizia custom può solo prevedere passi costanti oppure casuali</value> 
  • trunk/eraser/Eraser.DefaultPlugins/Strings.nl.resx

    r1871 r2036  
    193193    <value>(Untranslated)</value> 
    194194  </data> 
     195  <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
     196    <value>(Untranslated)</value> 
     197  </data> 
     198  <data name="Erasing files..." xml:space="preserve"> 
     199    <value>(Untranslated)</value> 
     200  </data> 
     201  <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
     202    <value>(Untranslated)</value> 
     203  </data> 
     204  <data name="The task was cancelled." xml:space="preserve"> 
     205    <value>(Untranslated)</value> 
     206  </data> 
     207  <data name="Unused disk space ({0})" xml:space="preserve"> 
     208    <value>(Untranslated)</value> 
     209  </data> 
     210  <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
     211    <value>(Untranslated)</value> 
     212  </data> 
     213  <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     214    <value>(Untranslated)</value> 
     215  </data> 
     216  <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
     217    <value>(Untranslated)</value> 
     218  </data> 
     219  <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
     220    <value>(Untranslated)</value> 
     221  </data> 
     222  <data name="Searching for files' cluster tips..." xml:space="preserve"> 
     223    <value>(Untranslated)</value> 
     224  </data> 
     225  <data name="Erasing cluster tips..." xml:space="preserve"> 
     226    <value>(Untranslated)</value> 
     227  </data> 
     228  <data name="Erasing unused space..." xml:space="preserve"> 
     229    <value>(Untranslated)</value> 
     230  </data> 
     231  <data name="Old resident file system table files" xml:space="preserve"> 
     232    <value>(Untranslated)</value> 
     233  </data> 
     234  <data name="Removing temporary files..." xml:space="preserve"> 
     235    <value>(Untranslated)</value> 
     236  </data> 
     237  <data name="Erasing unused directory structures..." xml:space="preserve"> 
     238    <value>(Untranslated)</value> 
     239  </data> 
     240  <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
     241    <value>(Untranslated)</value> 
     242  </data> 
     243  <data name="Removing folders..." xml:space="preserve"> 
     244    <value>(Untranslated)</value> 
     245  </data> 
     246  <data name="Recycle Bin" xml:space="preserve"> 
     247    <value>(Untranslated)</value> 
     248  </data> 
     249  <data name="Emptying recycle bin..." xml:space="preserve"> 
     250    <value>(Untranslated)</value> 
     251  </data> 
     252  <data name="Invalid file path" xml:space="preserve"> 
     253    <value>(Untranslated)</value> 
     254  </data> 
     255  <data name="Invalid folder path" xml:space="preserve"> 
     256    <value>(Untranslated)</value> 
     257  </data> 
     258  <data name="The path you selected is invalid." xml:space="preserve"> 
     259    <value>(Untranslated)</value> 
     260  </data> 
    195261  <data name="The custom erasure method can only comprise passes containing constant or random passes" xml:space="preserve"> 
    196262    <value>(Untranslated)</value> 
  • trunk/eraser/Eraser.DefaultPlugins/Strings.pl.resx

    r1906 r2036  
    193193    <value>{0} nie ma wymazanych resztek klastrów z powodu błędu: {1}</value> 
    194194  </data> 
     195  <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
     196    <value>(Untranslated)</value> 
     197  </data> 
     198  <data name="Erasing files..." xml:space="preserve"> 
     199    <value>(Untranslated)</value> 
     200  </data> 
     201  <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
     202    <value>(Untranslated)</value> 
     203  </data> 
     204  <data name="The task was cancelled." xml:space="preserve"> 
     205    <value>(Untranslated)</value> 
     206  </data> 
     207  <data name="Unused disk space ({0})" xml:space="preserve"> 
     208    <value>(Untranslated)</value> 
     209  </data> 
     210  <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
     211    <value>(Untranslated)</value> 
     212  </data> 
     213  <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     214    <value>(Untranslated)</value> 
     215  </data> 
     216  <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
     217    <value>(Untranslated)</value> 
     218  </data> 
     219  <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
     220    <value>(Untranslated)</value> 
     221  </data> 
     222  <data name="Searching for files' cluster tips..." xml:space="preserve"> 
     223    <value>(Untranslated)</value> 
     224  </data> 
     225  <data name="Erasing cluster tips..." xml:space="preserve"> 
     226    <value>(Untranslated)</value> 
     227  </data> 
     228  <data name="Erasing unused space..." xml:space="preserve"> 
     229    <value>(Untranslated)</value> 
     230  </data> 
     231  <data name="Old resident file system table files" xml:space="preserve"> 
     232    <value>(Untranslated)</value> 
     233  </data> 
     234  <data name="Removing temporary files..." xml:space="preserve"> 
     235    <value>(Untranslated)</value> 
     236  </data> 
     237  <data name="Erasing unused directory structures..." xml:space="preserve"> 
     238    <value>(Untranslated)</value> 
     239  </data> 
     240  <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
     241    <value>(Untranslated)</value> 
     242  </data> 
     243  <data name="Removing folders..." xml:space="preserve"> 
     244    <value>(Untranslated)</value> 
     245  </data> 
     246  <data name="Recycle Bin" xml:space="preserve"> 
     247    <value>(Untranslated)</value> 
     248  </data> 
     249  <data name="Emptying recycle bin..." xml:space="preserve"> 
     250    <value>(Untranslated)</value> 
     251  </data> 
     252  <data name="Invalid file path" xml:space="preserve"> 
     253    <value>(Untranslated)</value> 
     254  </data> 
     255  <data name="Invalid folder path" xml:space="preserve"> 
     256    <value>(Untranslated)</value> 
     257  </data> 
     258  <data name="The path you selected is invalid." xml:space="preserve"> 
     259    <value>(Untranslated)</value> 
     260  </data> 
    195261  <data name="The custom erasure method can only comprise passes containing constant or random passes" xml:space="preserve"> 
    196262    <value>Zwykła metoda wymazywania może tylko obejmować przebiegi ze stałymi lub losowymi przebiegami</value> 
  • trunk/eraser/Eraser.DefaultPlugins/Strings.resx

    r1871 r2036  
    193193    <value>{0} did not have its cluster tips erased because of the following error: {1}</value> 
    194194  </data> 
     195  <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
     196    <value>The file {0} was not erased as the file does not exist.</value> 
     197  </data> 
     198  <data name="Erasing files..." xml:space="preserve"> 
     199    <value>Erasing files...</value> 
     200  </data> 
     201  <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
     202    <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 
     203  </data> 
     204  <data name="The task was cancelled." xml:space="preserve"> 
     205    <value>The task was cancelled.</value> 
     206  </data> 
     207  <data name="Unused disk space ({0})" xml:space="preserve"> 
     208    <value>Unused disk space ({0})</value> 
     209  </data> 
     210  <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
     211    <value>The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation.</value> 
     212  </data> 
     213  <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     214    <value>The program does not have the required permissions to erase the unused space on disk.</value> 
     215  </data> 
     216  <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
     217    <value>This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern.</value> 
     218  </data> 
     219  <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
     220    <value>The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern.</value> 
     221  </data> 
     222  <data name="Searching for files' cluster tips..." xml:space="preserve"> 
     223    <value>Searching for files' cluster tips...</value> 
     224  </data> 
     225  <data name="Erasing cluster tips..." xml:space="preserve"> 
     226    <value>Erasing cluster tips...</value> 
     227  </data> 
     228  <data name="Erasing unused space..." xml:space="preserve"> 
     229    <value>Erasing unused space...</value> 
     230  </data> 
     231  <data name="Old resident file system table files" xml:space="preserve"> 
     232    <value>Old resident file system table files</value> 
     233  </data> 
     234  <data name="Removing temporary files..." xml:space="preserve"> 
     235    <value>Removing temporary files...</value> 
     236  </data> 
     237  <data name="Erasing unused directory structures..." xml:space="preserve"> 
     238    <value>Erasing unused directory structures...</value> 
     239  </data> 
     240  <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
     241    <value>Could not erase files and subfolders in {0} because {1}</value> 
     242  </data> 
     243  <data name="Removing folders..." xml:space="preserve"> 
     244    <value>Removing folders...</value> 
     245  </data> 
     246  <data name="Recycle Bin" xml:space="preserve"> 
     247    <value>Recycle Bin</value> 
     248  </data> 
     249  <data name="Emptying recycle bin..." xml:space="preserve"> 
     250    <value>Emptying recycle bin...</value> 
     251  </data> 
     252  <data name="Invalid file path" xml:space="preserve"> 
     253    <value>Invalid file path</value> 
     254  </data> 
     255  <data name="Invalid folder path" xml:space="preserve"> 
     256    <value>Invalid folder path</value> 
     257  </data> 
     258  <data name="The path you selected is invalid." xml:space="preserve"> 
     259    <value>The path you selected is invalid.</value> 
     260  </data> 
    195261  <data name="The custom erasure method can only comprise passes containing constant or random passes" xml:space="preserve"> 
    196262    <value>The custom erasure method can only comprise passes containing constant or random passes</value> 
  • trunk/eraser/Eraser.Manager/DirectExecutor.cs

    r2032 r2036  
    289289                    try 
    290290                    { 
    291                         UnusedSpaceTarget unusedSpaceTarget = 
    292                             target as UnusedSpaceTarget; 
    293                         FileSystemObjectTarget fileSystemObjectTarget = 
    294                             target as FileSystemObjectTarget; 
    295  
    296                         if (unusedSpaceTarget != null) 
    297                             EraseUnusedSpace(task, unusedSpaceTarget); 
    298                         else if (fileSystemObjectTarget != null) 
    299                             EraseFilesystemObject(task, fileSystemObjectTarget); 
    300                         else 
    301                             throw new ArgumentException("Unknown erasure target."); 
     291                        target.Execute(); 
    302292                    } 
    303293                    catch (FatalException) 
     
    344334                currentTask = null; 
    345335            } 
    346         } 
    347  
    348         /// <summary> 
    349         /// Executes a unused space erase. 
    350         /// </summary> 
    351         /// <param name="task">The task currently being executed</param> 
    352         /// <param name="target">The target of the unused space erase.</param> 
    353         private void EraseUnusedSpace(Task task, UnusedSpaceTarget target) 
    354         { 
    355             //Check for sufficient privileges to run the unused space erasure. 
    356             if (!Security.IsAdministrator()) 
    357             { 
    358                 if (Environment.OSVersion.Platform == PlatformID.Win32NT && 
    359                     Environment.OSVersion.Version >= new Version(6, 0)) 
    360                 { 
    361                     Logger.Log(S._("The program does not have the required permissions to erase " + 
    362                         "the unused space on disk. Run the program as an administrator and retry " + 
    363                         "the operation."), LogLevel.Error); 
    364                 } 
    365                 else 
    366                 { 
    367                     Logger.Log(S._("The program does not have the required permissions to erase " + 
    368                         "the unused space on disk."), LogLevel.Error); 
    369                 } 
    370  
    371                 return; 
    372             } 
    373  
    374             //Check whether System Restore has any available checkpoints. 
    375             if (SystemRestore.GetInstances().Count != 0) 
    376             { 
    377                 Logger.Log(S._("This computer has had System Restore or Volume Shadow Copies " + 
    378                     "enabled. This may allow copies of files stored on the disk to be recovered " + 
    379                     "and pose a security concern.", target.Drive), LogLevel.Warning); 
    380             } 
    381              
    382             //If the user is under disk quotas, log a warning message 
    383             if (VolumeInfo.FromMountPoint(target.Drive).HasQuota) 
    384                 Logger.Log(S._("The drive {0} has disk quotas active. This will prevent the " + 
    385                     "complete erasure of unused space and may pose a security concern.", 
    386                     target.Drive), LogLevel.Warning); 
    387  
    388             //Get the erasure method if the user specified he wants the default. 
    389             ErasureMethod method = target.EffectiveMethod; 
    390  
    391             //Make a folder to dump our temporary files in 
    392             DirectoryInfo info = new DirectoryInfo(target.Drive); 
    393             VolumeInfo volInfo = VolumeInfo.FromMountPoint(target.Drive); 
    394             FileSystem fsManager = ManagerLibrary.Instance.FileSystemRegistrar[volInfo]; 
    395  
    396             //Start sampling the speed of the task. 
    397             SteppedProgressManager progress = new SteppedProgressManager(); 
    398             target.Progress = progress; 
    399             task.Progress.Steps.Add(new SteppedProgressManagerStep( 
    400                 progress, 1.0f / task.Targets.Count)); 
    401  
    402             //Erase the cluster tips of every file on the drive. 
    403             if (target.EraseClusterTips) 
    404             { 
    405                 //Define the callback handlers 
    406                 ProgressManager tipSearch = new ProgressManager(); 
    407                 progress.Steps.Add(new SteppedProgressManagerStep(tipSearch,  
    408                     0.0f, S._("Searching for files' cluster tips..."))); 
    409                 tipSearch.Total = 1; 
    410                 ClusterTipsSearchProgress searchProgress = delegate(string path) 
    411                     { 
    412                         if (currentTask.Canceled) 
    413                             throw new OperationCanceledException(S._("The task was cancelled.")); 
    414  
    415                         task.OnProgressChanged(target, 
    416                             new ProgressChangedEventArgs(tipSearch, 
    417                                 new TaskProgressChangedEventArgs(path, 0, 0))); 
    418                     }; 
    419  
    420                 ProgressManager tipProgress = new ProgressManager(); 
    421                 progress.Steps.Add(new SteppedProgressManagerStep(tipProgress, 0.1f, 
    422                     S._("Erasing cluster tips..."))); 
    423                 ClusterTipsEraseProgress eraseProgress = 
    424                     delegate(int currentFile, int totalFiles, string currentFilePath) 
    425                     { 
    426                         tipSearch.MarkComplete(); 
    427                         tipProgress.Total = totalFiles; 
    428                         tipProgress.Completed = currentFile; 
    429                         task.OnProgressChanged(target, 
    430                             new ProgressChangedEventArgs(tipProgress, 
    431                                 new TaskProgressChangedEventArgs(currentFilePath, 0, 0))); 
    432  
    433                         if (currentTask.Canceled) 
    434                             throw new OperationCanceledException(S._("The task was cancelled.")); 
    435                     }; 
    436  
    437                 //Start counting statistics 
    438                 fsManager.EraseClusterTips(VolumeInfo.FromMountPoint(target.Drive), 
    439                     method, searchProgress, eraseProgress); 
    440                 tipProgress.MarkComplete(); 
    441             } 
    442  
    443             bool lowDiskSpaceNotifications = Shell.LowDiskSpaceNotificationsEnabled; 
    444             info = info.CreateSubdirectory(Path.GetFileName( 
    445                 FileSystem.GenerateRandomFileName(info, 18))); 
    446             try 
    447             { 
    448                 //Set the folder's compression flag off since we want to use as much 
    449                 //space as possible 
    450                 if (info.IsCompressed()) 
    451                     info.Uncompress(); 
    452  
    453                 //Disable the low disk space notifications 
    454                 Shell.LowDiskSpaceNotificationsEnabled = false; 
    455  
    456                 ProgressManager mainProgress = new ProgressManager(); 
    457                 progress.Steps.Add(new SteppedProgressManagerStep(mainProgress, 
    458                     target.EraseClusterTips ? 0.8f : 0.9f, S._("Erasing unused space..."))); 
    459  
    460                 //Continue creating files while there is free space. 
    461                 while (volInfo.AvailableFreeSpace > 0) 
    462                 { 
    463                     //Generate a non-existant file name 
    464                     string currFile = FileSystem.GenerateRandomFileName(info, 18); 
    465  
    466                     //Create the stream 
    467                     using (FileStream stream = new FileStream(currFile, FileMode.CreateNew, 
    468                         FileAccess.Write, FileShare.None, 8, FileOptions.WriteThrough)) 
    469                     { 
    470                         //Set the length of the file to be the amount of free space left 
    471                         //or the maximum size of one of these dumps. 
    472                         mainProgress.Total = mainProgress.Completed + 
    473                             method.CalculateEraseDataSize(null, volInfo.AvailableFreeSpace); 
    474                         long streamLength = Math.Min(ErasureMethod.FreeSpaceFileUnit, 
    475                             volInfo.AvailableFreeSpace); 
    476  
    477                         //Handle IO exceptions gracefully, because the filesystem 
    478                         //may require more space than demanded by us for file allocation. 
    479                         while (true) 
    480                             try 
    481                             { 
    482                                 stream.SetLength(streamLength); 
    483                                 break; 
    484                             } 
    485                             catch (IOException) 
    486                             { 
    487                                 if (streamLength > volInfo.ClusterSize) 
    488                                     streamLength -= volInfo.ClusterSize; 
    489                                 else 
    490                                     throw; 
    491                             } 
    492  
    493                         //Then run the erase task 
    494                         method.Erase(stream, long.MaxValue, 
    495                             ManagerLibrary.Instance.PrngRegistrar[ManagerLibrary.Settings.ActivePrng], 
    496                             delegate(long lastWritten, long totalData, int currentPass) 
    497                             { 
    498                                 mainProgress.Completed += lastWritten; 
    499                                 task.OnProgressChanged(target, 
    500                                     new ProgressChangedEventArgs(mainProgress, 
    501                                         new TaskProgressChangedEventArgs(target.Drive, currentPass, method.Passes))); 
    502  
    503                                 if (currentTask.Canceled) 
    504                                     throw new OperationCanceledException(S._("The task was cancelled.")); 
    505                             } 
    506                         ); 
    507                     } 
    508                 } 
    509  
    510                 //Mark the main bulk of the progress as complete 
    511                 mainProgress.MarkComplete(); 
    512  
    513                 //Erase old resident file system table files 
    514                 ProgressManager residentProgress = new ProgressManager(); 
    515                 progress.Steps.Add(new SteppedProgressManagerStep(residentProgress, 
    516                     0.05f, S._("Old resident file system table files"))); 
    517                 fsManager.EraseOldFileSystemResidentFiles(volInfo, info, method, 
    518                     delegate(int currentFile, int totalFiles) 
    519                     { 
    520                         residentProgress.Completed = currentFile; 
    521                         residentProgress.Total = totalFiles; 
    522                         task.OnProgressChanged(target, 
    523                             new ProgressChangedEventArgs(residentProgress, 
    524                                 new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    525  
    526                         if (currentTask.Canceled) 
    527                             throw new OperationCanceledException(S._("The task was cancelled.")); 
    528                     } 
    529                 ); 
    530  
    531                 residentProgress.MarkComplete(); 
    532             } 
    533             finally 
    534             { 
    535                 //Remove the folder holding all our temporary files. 
    536                 ProgressManager tempFiles = new ProgressManager(); 
    537                 progress.Steps.Add(new SteppedProgressManagerStep(tempFiles, 
    538                     0.0f, S._("Removing temporary files..."))); 
    539                 task.OnProgressChanged(target, new ProgressChangedEventArgs(tempFiles, 
    540                     new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    541                 fsManager.DeleteFolder(info); 
    542                 tempFiles.Completed = tempFiles.Total; 
    543  
    544                 //Reset the low disk space notifications 
    545                 Shell.LowDiskSpaceNotificationsEnabled = lowDiskSpaceNotifications; 
    546             } 
    547  
    548             //Then clean the old file system entries 
    549             ProgressManager structureProgress = new ProgressManager(); 
    550             progress.Steps.Add(new SteppedProgressManagerStep(structureProgress, 
    551                 0.05f, S._("Erasing unused directory structures..."))); 
    552             fsManager.EraseDirectoryStructures(volInfo, 
    553                 delegate(int currentFile, int totalFiles) 
    554                 { 
    555                     if (currentTask.Canceled) 
    556                         throw new OperationCanceledException(S._("The task was cancelled.")); 
    557  
    558                     //Compute the progress 
    559                     structureProgress.Total = totalFiles; 
    560                     structureProgress.Completed = currentFile; 
    561  
    562                     //Set the event parameters, then broadcast the progress event. 
    563                     task.OnProgressChanged(target, 
    564                         new ProgressChangedEventArgs(structureProgress, 
    565                             new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    566                 } 
    567             ); 
    568  
    569             structureProgress.MarkComplete(); 
    570             target.Progress = null; 
    571         } 
    572  
    573         /// <summary> 
    574         /// Erases a file or folder on the volume. 
    575         /// </summary> 
    576         /// <param name="task">The task currently being processed.</param> 
    577         /// <param name="target">The target of the erasure.</param> 
    578         /// <param name="progress">The progress manager for the current task.</param> 
    579         private void EraseFilesystemObject(Task task, FileSystemObjectTarget target) 
    580         { 
    581             //Retrieve the list of files to erase. 
    582             long dataTotal = 0; 
    583             List<string> paths = target.GetPaths(out dataTotal); 
    584  
    585             //Get the erasure method if the user specified he wants the default. 
    586             ErasureMethod method = target.EffectiveMethod; 
    587             dataTotal = method.CalculateEraseDataSize(paths, dataTotal); 
    588  
    589             //Set the event's current target status. 
    590             SteppedProgressManager progress = new SteppedProgressManager(); 
    591             target.Progress = progress; 
    592             task.Progress.Steps.Add(new SteppedProgressManagerStep(progress, 1.0f / task.Targets.Count)); 
    593  
    594             //Iterate over every path, and erase the path. 
    595             for (int i = 0; i < paths.Count; ++i) 
    596             { 
    597                 //Check that the file exists - we do not want to bother erasing nonexistant files 
    598                 StreamInfo info = new StreamInfo(paths[i]); 
    599                 if (!info.Exists) 
    600                 { 
    601                     Logger.Log(S._("The file {0} was not erased as the file does not exist.", 
    602                         paths[i]), LogLevel.Notice); 
    603                     continue; 
    604                 } 
    605  
    606                 //Get the filesystem provider to handle the secure file erasures 
    607                 FileSystem fsManager = ManagerLibrary.Instance.FileSystemRegistrar[ 
    608                     VolumeInfo.FromMountPoint(info.DirectoryName)]; 
    609  
    610                 bool isReadOnly = false; 
    611  
    612                 try 
    613                 { 
    614                     //Update the task progress 
    615                     ProgressManager step = new ProgressManager(); 
    616                     progress.Steps.Add(new SteppedProgressManagerStep(step, 
    617                         info.Length / (float)dataTotal, S._("Erasing files..."))); 
    618                     task.OnProgressChanged(target, 
    619                         new ProgressChangedEventArgs(step, 
    620                             new TaskProgressChangedEventArgs(paths[i], 0, method.Passes))); 
    621  
    622                     //Remove the read-only flag, if it is set. 
    623                     if (isReadOnly = info.IsReadOnly) 
    624                         info.IsReadOnly = false; 
    625  
    626                     //Make sure the file does not have any attributes which may affect 
    627                     //the erasure process 
    628                     if ((info.Attributes & FileAttributes.Compressed) != 0 || 
    629                         (info.Attributes & FileAttributes.Encrypted) != 0 || 
    630                         (info.Attributes & FileAttributes.SparseFile) != 0) 
    631                     { 
    632                         //Log the error 
    633                         Logger.Log(S._("The file {0} could not be erased because the file was " + 
    634                             "either compressed, encrypted or a sparse file.", info.FullName), 
    635                             LogLevel.Error); 
    636                         continue; 
    637                     } 
    638  
    639                     fsManager.EraseFileSystemObject(info, method, 
    640                         delegate(long lastWritten, long totalData, int currentPass) 
    641                         { 
    642                             if (currentTask.Canceled) 
    643                                 throw new OperationCanceledException(S._("The task was cancelled.")); 
    644  
    645                             step.Total = totalData; 
    646                             step.Completed += lastWritten; 
    647                             task.OnProgressChanged(target, 
    648                                 new ProgressChangedEventArgs(step, 
    649                                     new TaskProgressChangedEventArgs(info.FullName, currentPass, method.Passes))); 
    650                         }); 
    651  
    652                     //Remove the file. 
    653                     FileInfo fileInfo = info.File; 
    654                     if (fileInfo != null) 
    655                         fsManager.DeleteFile(fileInfo); 
    656                     step.MarkComplete(); 
    657                 } 
    658                 catch (UnauthorizedAccessException) 
    659                 { 
    660                     Logger.Log(S._("The file {0} could not be erased because the file's " + 
    661                         "permissions prevent access to the file.", info.FullName), LogLevel.Error); 
    662                 } 
    663                 catch (SharingViolationException) 
    664                 { 
    665                     if (!ManagerLibrary.Settings.ForceUnlockLockedFiles) 
    666                         throw; 
    667  
    668                     StringBuilder processStr = new StringBuilder(); 
    669                     foreach (OpenHandle handle in OpenHandle.Close(info.FullName)) 
    670                     { 
    671                         try 
    672                         { 
    673                             processStr.AppendFormat( 
    674                                 System.Globalization.CultureInfo.InvariantCulture, 
    675                                 "{0}, ", System.Diagnostics.Process.GetProcessById(handle.ProcessId).MainModule.FileName); 
    676                         } 
    677                         catch (System.ComponentModel.Win32Exception) 
    678                         { 
    679                             processStr.AppendFormat( 
    680                                 System.Globalization.CultureInfo.InvariantCulture, 
    681                                 "Process ID {0}, ", handle.ProcessId); 
    682                         } 
    683                     } 
    684  
    685                     if (processStr.Length != 0) 
    686                         Logger.Log(S._("Could not force closure of file \"{0}\" {1}", 
    687                                 paths[i], S._("(locked by {0})", 
    688                                     processStr.ToString().Remove(processStr.Length - 2)).Trim()), 
    689                             LogLevel.Error); 
    690                 } 
    691                 finally 
    692                 { 
    693                     //Re-set the read-only flag if the file exists (i.e. there was an error) 
    694                     if (isReadOnly && info.Exists && !info.IsReadOnly) 
    695                         info.IsReadOnly = isReadOnly; 
    696                 } 
    697             } 
    698  
    699             //If the user requested a folder removal, do it. 
    700             if ((target is FolderTarget) && Directory.Exists(target.Path)) 
    701             { 
    702                 ProgressManager step = new ProgressManager(); 
    703                 progress.Steps.Add(new SteppedProgressManagerStep(step, 
    704                     0.0f, S._("Removing folders..."))); 
    705                  
    706                 //Remove all subfolders which are empty. 
    707                 FolderTarget fldr = (FolderTarget)target; 
    708                 FileSystem fsManager = ManagerLibrary.Instance.FileSystemRegistrar[VolumeInfo.FromMountPoint(fldr.Path)]; 
    709                 Action<DirectoryInfo> eraseEmptySubFolders = null; 
    710                 eraseEmptySubFolders = delegate(DirectoryInfo info) 
    711                 { 
    712                      foreach (DirectoryInfo subDir in info.GetDirectories()) 
    713                          eraseEmptySubFolders(subDir); 
    714                      task.OnProgressChanged(target, 
    715                          new ProgressChangedEventArgs(step, 
    716                              new TaskProgressChangedEventArgs(info.FullName, 0, 0))); 
    717  
    718                      FileSystemInfo[] files = info.GetFileSystemInfos(); 
    719                      if (files.Length == 0) 
    720                          fsManager.DeleteFolder(info); 
    721                 }; 
    722  
    723                 DirectoryInfo directory = new DirectoryInfo(fldr.Path); 
    724                 foreach (DirectoryInfo subDir in directory.GetDirectories()) 
    725                     eraseEmptySubFolders(subDir); 
    726  
    727                 if (fldr.DeleteIfEmpty) 
    728                 { 
    729                     //See if this is the root of a volume. 
    730                     bool isVolumeRoot = directory.Parent == null; 
    731                     foreach (VolumeInfo volume in VolumeInfo.Volumes) 
    732                         foreach (string mountPoint in volume.MountPoints) 
    733                             if (directory.FullName == mountPoint) 
    734                                 isVolumeRoot = true; 
    735  
    736                     //If the folder is a mount point, then don't delete it. If it isn't, 
    737                     //search for files under the folder to see if it is empty. 
    738                     if (!isVolumeRoot && directory.Exists && 
    739                         directory.GetFiles("*", SearchOption.AllDirectories).Length == 0) 
    740                     { 
    741                         fsManager.DeleteFolder(directory); 
    742                     } 
    743                 } 
    744             } 
    745  
    746             //If the user was erasing the recycle bin, clear the bin. 
    747             if (target is RecycleBinTarget) 
    748             { 
    749                 ProgressManager step = new ProgressManager(); 
    750                 progress.Steps.Add(new SteppedProgressManagerStep(step, 
    751                     0.0f, S._("Emptying recycle bin..."))); 
    752                 task.OnProgressChanged(target, 
    753                     new ProgressChangedEventArgs(step, 
    754                         new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    755  
    756                 RecycleBin.Empty(EmptyRecycleBinOptions.NoConfirmation | 
    757                     EmptyRecycleBinOptions.NoProgressUI | EmptyRecycleBinOptions.NoSound); 
    758             } 
    759  
    760             target.Progress = null; 
    761336        } 
    762337 
  • trunk/eraser/Eraser.Manager/Eraser.Manager.csproj

    r2035 r2036  
    7070    <Compile Include="Exception.cs" /> 
    7171    <Compile Include="Executor.cs" /> 
    72     <Compile Include="FileErasureTargetSettings.cs"> 
    73       <SubType>UserControl</SubType> 
    74     </Compile> 
    75     <Compile Include="FileErasureTargetSettings.Designer.cs"> 
    76       <DependentUpon>FileErasureTargetSettings.cs</DependentUpon> 
    77     </Compile> 
    7872    <Compile Include="FileSystem.cs" /> 
    79     <Compile Include="FolderErasureTargetSettings.cs"> 
    80       <SubType>UserControl</SubType> 
    81     </Compile> 
    82     <Compile Include="FolderErasureTargetSettings.Designer.cs"> 
    83       <DependentUpon>FolderErasureTargetSettings.cs</DependentUpon> 
    84     </Compile> 
    8573    <Compile Include="IRegistrar.cs" /> 
    8674    <Compile Include="ManagerLibrary.cs" /> 
     
    9381    <Compile Include="Settings.cs" /> 
    9482    <Compile Include="Task.cs" /> 
    95     <Compile Include="UnusedSpaceErasureTargetSettings.cs"> 
    96       <SubType>UserControl</SubType> 
    97     </Compile> 
    98     <Compile Include="UnusedSpaceErasureTargetSettings.Designer.cs"> 
    99       <DependentUpon>UnusedSpaceErasureTargetSettings.cs</DependentUpon> 
    100     </Compile> 
    10183  </ItemGroup> 
    10284  <ItemGroup> 
     
    11193  </ItemGroup> 
    11294  <ItemGroup> 
    113     <EmbeddedResource Include="FileErasureTargetSettings.resx"> 
    114       <DependentUpon>FileErasureTargetSettings.cs</DependentUpon> 
    115     </EmbeddedResource> 
    116     <EmbeddedResource Include="FolderErasureTargetSettings.resx"> 
    117       <DependentUpon>FolderErasureTargetSettings.cs</DependentUpon> 
    118     </EmbeddedResource> 
    11995    <EmbeddedResource Include="Strings.en.resx"> 
    12096      <SubType>Designer</SubType> 
     
    127103    <EmbeddedResource Include="Strings.resx"> 
    128104      <SubType>Designer</SubType> 
    129     </EmbeddedResource> 
    130     <EmbeddedResource Include="UnusedSpaceErasureTargetSettings.resx"> 
    131       <DependentUpon>UnusedSpaceErasureTargetSettings.cs</DependentUpon> 
    132105    </EmbeddedResource> 
    133106  </ItemGroup> 
  • trunk/eraser/Eraser.Manager/ErasureTarget.cs

    r2033 r2036  
    2525using System.Text; 
    2626 
    27 using System.Text.RegularExpressions; 
    2827using System.Security.Permissions; 
    29 using System.IO; 
    3028using System.Runtime.Serialization; 
    3129 
     
    3937    /// </summary> 
    4038    [Serializable] 
    41     public abstract class ErasureTarget : ISerializable 
     39    public abstract class ErasureTarget : ISerializable, IRegisterable 
    4240    { 
    4341        #region Serialization code 
     
    5856        #endregion 
    5957 
     58        #region IRegisterable Members 
     59 
     60        public abstract Guid Guid 
     61        { 
     62            get; 
     63        } 
     64 
     65        #endregion 
     66 
    6067        /// <summary> 
    6168        /// Constructor. 
     
    133140        { 
    134141            get; 
     142            protected set; 
     143        } 
     144         
     145        /// <summary> 
     146        /// The Progress Changed event handler of the owning task. 
     147        /// </summary> 
     148        protected internal Action<ErasureTarget, ProgressChangedEventArgs> OnProgressChanged 
     149        { 
     150            get; 
    135151            internal set; 
    136152        } 
     
    149165 
    150166        /// <summary> 
    151         /// Executes the given task. 
    152         /// </summary> 
    153         /// <param name="progress">The progress manager instance which is used to 
    154         /// track the progress of the current target's erasure.</param> 
    155         public virtual void Execute(ProgressManagerBase progress) 
    156         { 
    157         } 
     167        /// Executes the given target. 
     168        /// </summary> 
     169        public abstract void Execute(); 
    158170 
    159171        /// <summary> 
     
    184196    } 
    185197 
    186     /// <summary> 
    187     /// Class representing a tangible object (file/folder) to be erased. 
    188     /// </summary> 
    189     [Serializable] 
    190     public abstract class FileSystemObjectTarget : ErasureTarget 
     198    public class ErasureTargetRegistrar : Registrar<ErasureTarget> 
    191199    { 
    192         #region Serialization code 
    193         protected FileSystemObjectTarget(SerializationInfo info, StreamingContext context) 
    194             : base(info, context) 
    195         { 
    196             Path = (string)info.GetValue("Path", typeof(string)); 
    197         } 
    198  
    199         [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)] 
    200         public override void GetObjectData(SerializationInfo info, StreamingContext context) 
    201         { 
    202             base.GetObjectData(info, context); 
    203             info.AddValue("Path", Path); 
    204         } 
    205         #endregion 
    206  
    207         /// <summary> 
    208         /// Constructor. 
    209         /// </summary> 
    210         protected FileSystemObjectTarget() 
    211             : base() 
    212         { 
    213         } 
    214  
    215         /// <summary> 
    216         /// Retrieves the list of files/folders to erase as a list. 
    217         /// </summary> 
    218         /// <param name="totalSize">Returns the total size in bytes of the 
    219         /// items.</param> 
    220         /// <returns>A list containing the paths to all the files to be erased.</returns> 
    221         internal abstract List<string> GetPaths(out long totalSize); 
    222  
    223         /// <summary> 
    224         /// Adds ADSes of the given file to the list. 
    225         /// </summary> 
    226         /// <param name="list">The list to add the ADS paths to.</param> 
    227         /// <param name="file">The file to look for ADSes</param> 
    228         protected void GetPathADSes(ICollection<string> list, out long totalSize, string file) 
    229         { 
    230             totalSize = 0; 
    231  
    232             try 
    233             { 
    234                 //Get the ADS names 
    235                 IList<string> adses = new FileInfo(file).GetADSes(); 
    236  
    237                 //Then prepend the path. 
    238                 foreach (string adsName in adses) 
    239                 { 
    240                     string adsPath = file + ':' + adsName; 
    241                     list.Add(adsPath); 
    242                     StreamInfo info = new StreamInfo(adsPath); 
    243                     totalSize += info.Length; 
    244                 } 
    245             } 
    246             catch (FileNotFoundException) 
    247             { 
    248             } 
    249             catch (SharingViolationException) 
    250             { 
    251                 //The system cannot open the file, try to force the file handle to close. 
    252                 if (!ManagerLibrary.Settings.ForceUnlockLockedFiles) 
    253                     throw; 
    254  
    255                 StringBuilder processStr = new StringBuilder(); 
    256                 foreach (OpenHandle handle in OpenHandle.Close(file)) 
    257                 { 
    258                     try 
    259                     { 
    260                         processStr.AppendFormat( 
    261                             System.Globalization.CultureInfo.InvariantCulture, 
    262                             "{0}, ", (System.Diagnostics.Process.GetProcessById(handle.ProcessId)).MainModule.FileName); 
    263                     } 
    264                     catch (System.ComponentModel.Win32Exception) 
    265                     { 
    266                         processStr.AppendFormat( 
    267                             System.Globalization.CultureInfo.InvariantCulture, 
    268                             "Process ID {0}, ", handle.ProcessId); 
    269                     } 
    270                 } 
    271  
    272                 if (processStr.Length == 0) 
    273                 { 
    274                     GetPathADSes(list, out totalSize, file); 
    275                     return; 
    276                 } 
    277                 else 
    278                     throw; 
    279             } 
    280             catch (UnauthorizedAccessException e) 
    281             { 
    282                 //The system cannot read the file, assume no ADSes for lack of 
    283                 //more information. 
    284                 Logger.Log(e.Message, LogLevel.Error); 
    285             } 
    286         } 
    287  
    288         /// <summary> 
    289         /// The path to the file or folder referred to by this object. 
    290         /// </summary> 
    291         public string Path { get; set; } 
    292  
    293         public sealed override ErasureMethod EffectiveMethod 
    294         { 
    295             get 
    296             { 
    297                 if (Method != ErasureMethodRegistrar.Default) 
    298                     return base.EffectiveMethod; 
    299  
    300                 return ManagerLibrary.Instance.ErasureMethodRegistrar[ 
    301                     ManagerLibrary.Settings.DefaultFileErasureMethod]; 
    302             } 
    303         } 
    304  
    305         public override string UIText 
    306         { 
    307             get 
    308             { 
    309                 string fileName = System.IO.Path.GetFileName(Path); 
    310                 string directoryName = System.IO.Path.GetDirectoryName(Path); 
    311                 return string.IsNullOrEmpty(fileName) ? 
    312                         (string.IsNullOrEmpty(directoryName) ? Path : directoryName) 
    313                     : fileName; 
    314             } 
    315         } 
    316     } 
    317  
    318     /// <summary> 
    319     /// Class representing a unused space erase. 
    320     /// </summary> 
    321     [Serializable] 
    322     public class UnusedSpaceTarget : ErasureTarget 
    323     { 
    324         #region Serialization code 
    325         protected UnusedSpaceTarget(SerializationInfo info, StreamingContext context) 
    326             : base(info, context) 
    327         { 
    328             Drive = (string)info.GetValue("Drive", typeof(string)); 
    329             EraseClusterTips = (bool)info.GetValue("EraseClusterTips", typeof(bool)); 
    330         } 
    331  
    332         [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)] 
    333         public override void GetObjectData(SerializationInfo info, StreamingContext context) 
    334         { 
    335             base.GetObjectData(info, context); 
    336             info.AddValue("Drive", Drive); 
    337             info.AddValue("EraseClusterTips", EraseClusterTips); 
    338         } 
    339         #endregion 
    340  
    341         /// <summary> 
    342         /// Constructor. 
    343         /// </summary> 
    344         public UnusedSpaceTarget() 
    345             : base() 
    346         { 
    347         } 
    348  
    349         public sealed override ErasureMethod EffectiveMethod 
    350         { 
    351             get 
    352             { 
    353                 if (Method == ErasureMethodRegistrar.Default) 
    354                     return base.EffectiveMethod; 
    355  
    356                 return ManagerLibrary.Instance.ErasureMethodRegistrar[ 
    357                     ManagerLibrary.Settings.DefaultUnusedSpaceErasureMethod]; 
    358             } 
    359         } 
    360  
    361         public override bool SupportsMethod(ErasureMethod method) 
    362         { 
    363             return method == ErasureMethodRegistrar.Default || 
    364                 method is UnusedSpaceErasureMethod; 
    365         } 
    366  
    367         public override string UIText 
    368         { 
    369             get { return S._("Unused disk space ({0})", Drive); } 
    370         } 
    371  
    372         public override IErasureTargetConfigurer Configurer 
    373         { 
    374             get { return new UnusedSpaceErasureTargetSettings(); } 
    375         } 
    376  
    377         /// <summary> 
    378         /// The drive to erase 
    379         /// </summary> 
    380         public string Drive { get; set; } 
    381  
    382         /// <summary> 
    383         /// Whether cluster tips should be erased. 
    384         /// </summary> 
    385         public bool EraseClusterTips { get; set; } 
    386     } 
    387  
    388     /// <summary> 
    389     /// Class representing a file to be erased. 
    390     /// </summary> 
    391     [Serializable] 
    392     public class FileTarget : FileSystemObjectTarget 
    393     { 
    394         #region Serialization code 
    395         protected FileTarget(SerializationInfo info, StreamingContext context) 
    396             : base(info, context) 
    397         { 
    398         } 
    399         #endregion 
    400  
    401         /// <summary> 
    402         /// Constructor. 
    403         /// </summary> 
    404         public FileTarget() 
    405         { 
    406         } 
    407  
    408         public override IErasureTargetConfigurer Configurer 
    409         { 
    410             get { return new FileErasureTargetSettings(); } 
    411         } 
    412  
    413         internal override List<string> GetPaths(out long totalSize) 
    414         { 
    415             totalSize = 0; 
    416             List<string> result = new List<string>(); 
    417             FileInfo fileInfo = new FileInfo(Path); 
    418  
    419             if (fileInfo.Exists) 
    420             { 
    421                 GetPathADSes(result, out totalSize, Path); 
    422                 totalSize += fileInfo.Length; 
    423             } 
    424  
    425             result.Add(Path); 
    426             return result; 
    427         } 
    428     } 
    429  
    430     /// <summary> 
    431     /// Represents a folder and its files which are to be erased. 
    432     /// </summary> 
    433     [Serializable] 
    434     public class FolderTarget : FileSystemObjectTarget 
    435     { 
    436         #region Serialization code 
    437         protected FolderTarget(SerializationInfo info, StreamingContext context) 
    438             : base(info, context) 
    439         { 
    440             IncludeMask = (string)info.GetValue("IncludeMask", typeof(string)); 
    441             ExcludeMask = (string)info.GetValue("ExcludeMask", typeof(string)); 
    442             DeleteIfEmpty = (bool)info.GetValue("DeleteIfEmpty", typeof(bool)); 
    443         } 
    444  
    445         [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)] 
    446         public override void GetObjectData(SerializationInfo info, StreamingContext context) 
    447         { 
    448             base.GetObjectData(info, context); 
    449             info.AddValue("IncludeMask", IncludeMask); 
    450             info.AddValue("ExcludeMask", ExcludeMask); 
    451             info.AddValue("DeleteIfEmpty", DeleteIfEmpty); 
    452         } 
    453         #endregion 
    454  
    455         /// <summary> 
    456         /// Constructor. 
    457         /// </summary> 
    458         public FolderTarget() 
    459         { 
    460             IncludeMask = string.Empty; 
    461             ExcludeMask = string.Empty; 
    462             DeleteIfEmpty = true; 
    463         } 
    464  
    465         public override IErasureTargetConfigurer Configurer 
    466         { 
    467             get { return new FolderErasureTargetSettings(); } 
    468         } 
    469  
    470         internal override List<string> GetPaths(out long totalSize) 
    471         { 
    472             //Get a list to hold all the resulting paths. 
    473             List<string> result = new List<string>(); 
    474  
    475             //Open the root of the search, including every file matching the pattern 
    476             DirectoryInfo dir = new DirectoryInfo(Path); 
    477  
    478             //List recursively all the files which match the include pattern. 
    479             FileInfo[] files = GetFiles(dir); 
    480  
    481             //Then exclude each file and finalize the list and total file size 
    482             totalSize = 0; 
    483             if (ExcludeMask.Length != 0) 
    484             { 
    485                 string regex = Regex.Escape(ExcludeMask).Replace("\\*", ".*"). 
    486                     Replace("\\?", "."); 
    487                 Regex excludePattern = new Regex(regex, RegexOptions.IgnoreCase); 
    488                 foreach (FileInfo file in files) 
    489                     if (file.Exists && 
    490                         (file.Attributes & FileAttributes.ReparsePoint) == 0 && 
    491                         excludePattern.Matches(file.FullName).Count == 0) 
    492                     { 
    493                         totalSize += file.Length; 
    494                         GetPathADSes(result, out totalSize, file.FullName); 
    495                         result.Add(file.FullName); 
    496                     } 
    497             } 
    498             else 
    499                 foreach (FileInfo file in files) 
    500                 { 
    501                     if (!file.Exists || (file.Attributes & FileAttributes.ReparsePoint) != 0) 
    502                         continue; 
    503  
    504                     //Get the size of the file and its ADSes 
    505                     totalSize += file.Length; 
    506                     long adsesSize = 0; 
    507                     GetPathADSes(result, out adsesSize, file.FullName); 
    508                     totalSize += adsesSize; 
    509  
    510                     //Append this file to the list of files to erase. 
    511                     result.Add(file.FullName); 
    512                 } 
    513  
    514             //Return the filtered list. 
    515             return result; 
    516         } 
    517  
    518         /// <summary> 
    519         /// Gets all files in the provided directory. 
    520         /// </summary> 
    521         /// <param name="info">The directory to look files in.</param> 
    522         /// <returns>A list of files found in the directory matching the IncludeMask 
    523         /// property.</returns> 
    524         private FileInfo[] GetFiles(DirectoryInfo info) 
    525         { 
    526             List<FileInfo> result = new List<FileInfo>(); 
    527             if (info.Exists) 
    528             { 
    529                 try 
    530                 { 
    531                     foreach (DirectoryInfo dir in info.GetDirectories()) 
    532                         result.AddRange(GetFiles(dir)); 
    533  
    534                     if (IncludeMask.Length == 0) 
    535                         result.AddRange(info.GetFiles()); 
    536                     else 
    537                         result.AddRange(info.GetFiles(IncludeMask, SearchOption.TopDirectoryOnly)); 
    538                 } 
    539                 catch (UnauthorizedAccessException e) 
    540                 { 
    541                     Logger.Log(S._("Could not erase files and subfolders in {0} because {1}", 
    542                         info.FullName, e.Message), LogLevel.Error); 
    543                 } 
    544             } 
    545  
    546             return result.ToArray(); 
    547         } 
    548  
    549         /// <summary> 
    550         /// A wildcard expression stating the condition for the set of files to include. 
    551         /// The include mask is applied before the exclude mask is applied. If this value 
    552         /// is empty, all files and folders within the folder specified is included. 
    553         /// </summary> 
    554         public string IncludeMask { get; set; } 
    555  
    556         /// <summary> 
    557         /// A wildcard expression stating the condition for removing files from the set 
    558         /// of included files. If this value is omitted, all files and folders extracted 
    559         /// by the inclusion mask is erased. 
    560         /// </summary> 
    561         public string ExcludeMask { get; set; } 
    562  
    563         /// <summary> 
    564         /// Determines if Eraser should delete the folder after the erase process. 
    565         /// </summary> 
    566         public bool DeleteIfEmpty { get; set; } 
    567     } 
    568  
    569     [Serializable] 
    570     public class RecycleBinTarget : FileSystemObjectTarget 
    571     { 
    572         #region Serialization code 
    573         protected RecycleBinTarget(SerializationInfo info, StreamingContext context) 
    574             : base(info, context) 
    575         { 
    576         } 
    577         #endregion 
    578  
    579         public RecycleBinTarget() 
    580         { 
    581         } 
    582  
    583         public override IErasureTargetConfigurer Configurer 
    584         { 
    585             get { return null; } 
    586         } 
    587  
    588         internal override List<string> GetPaths(out long totalSize) 
    589         { 
    590             totalSize = 0; 
    591             List<string> result = new List<string>(); 
    592             string[] rootDirectory = new string[] { 
    593                     "$RECYCLE.BIN", 
    594                     "RECYCLER" 
    595                 }; 
    596  
    597             foreach (DriveInfo drive in DriveInfo.GetDrives()) 
    598             { 
    599                 foreach (string rootDir in rootDirectory) 
    600                 { 
    601                     DirectoryInfo dir = new DirectoryInfo( 
    602                         System.IO.Path.Combine( 
    603                             System.IO.Path.Combine(drive.Name, rootDir), 
    604                             System.Security.Principal.WindowsIdentity.GetCurrent(). 
    605                                 User.ToString())); 
    606                     if (!dir.Exists) 
    607                         continue; 
    608  
    609                     GetRecyclerFiles(dir, result, ref totalSize); 
    610                 } 
    611             } 
    612  
    613             return result; 
    614         } 
    615  
    616         /// <summary> 
    617         /// Retrieves all files within this folder, without exclusions. 
    618         /// </summary> 
    619         /// <param name="info">The DirectoryInfo object representing the folder to traverse.</param> 
    620         /// <param name="paths">The list of files to store path information in.</param> 
    621         /// <param name="totalSize">Receives the total size of the files.</param> 
    622         private void GetRecyclerFiles(DirectoryInfo info, List<string> paths, 
    623             ref long totalSize) 
    624         { 
    625             try 
    626             { 
    627                 foreach (FileInfo fileInfo in info.GetFiles()) 
    628                 { 
    629                     if (!fileInfo.Exists || (fileInfo.Attributes & FileAttributes.ReparsePoint) != 0) 
    630                         continue; 
    631  
    632                     long adsSize = 0; 
    633                     GetPathADSes(paths, out adsSize, fileInfo.FullName); 
    634                     totalSize += adsSize; 
    635                     totalSize += fileInfo.Length; 
    636                     paths.Add(fileInfo.FullName); 
    637                 } 
    638  
    639                 foreach (DirectoryInfo directoryInfo in info.GetDirectories()) 
    640                     if ((directoryInfo.Attributes & FileAttributes.ReparsePoint) == 0) 
    641                         GetRecyclerFiles(directoryInfo, paths, ref totalSize); 
    642             } 
    643             catch (UnauthorizedAccessException e) 
    644             { 
    645                 Logger.Log(e.Message, LogLevel.Error); 
    646             } 
    647         } 
    648  
    649         /// <summary> 
    650         /// Retrieves the text to display representing this task. 
    651         /// </summary> 
    652         public override string UIText 
    653         { 
    654             get 
    655             { 
    656                 return S._("Recycle Bin"); 
    657             } 
    658         } 
    659200    } 
    660201 
     
    716257        { 
    717258            item.Task = owner; 
     259            item.OnProgressChanged = owner.OnProgressChanged; 
    718260            list.Add(item); 
    719261        } 
     
    771313        { 
    772314            item.Task = owner; 
     315            item.OnProgressChanged = owner.OnProgressChanged; 
    773316            list.Insert(index, item); 
    774317        } 
     
    805348                owner = value; 
    806349                foreach (ErasureTarget target in list) 
     350                { 
    807351                    target.Task = owner; 
     352                    target.OnProgressChanged = owner.OnProgressChanged; 
     353                } 
    808354            } 
    809355        } 
  • trunk/eraser/Eraser.Manager/ManagerLibrary.cs

    r1802 r2036  
    9393 
    9494        /// <summary> 
    95         /// The global instance of the Erasure method manager. 
     95        /// The global instance of the Erasure method Manager. 
    9696        /// </summary> 
    9797        public ErasureMethodRegistrar ErasureMethodRegistrar { get; private set; } 
     98 
     99        /// <summary> 
     100        /// The global instance of the Erasure target Manager. 
     101        /// </summary> 
     102        public ErasureTargetRegistrar ErasureTargetRegistrar { get; private set; } 
    98103 
    99104        /// <summary> 
  • trunk/eraser/Eraser.Manager/Strings.en.resx

    r2034 r2036  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    119119  </resheader> 
    120   <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
    121     <value>The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation.</value> 
    122   </data> 
    123   <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
    124     <value>The program does not have the required permissions to erase the unused space on disk.</value> 
    125   </data> 
    126   <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
    127     <value>This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern.</value> 
    128   </data> 
    129   <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
    130     <value>The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern.</value> 
    131   </data> 
    132   <data name="Searching for files' cluster tips..." xml:space="preserve"> 
    133     <value>Searching for files' cluster tips...</value> 
    134   </data> 
    135   <data name="The task was cancelled." xml:space="preserve"> 
    136     <value>The task was cancelled.</value> 
    137   </data> 
    138   <data name="Erasing cluster tips..." xml:space="preserve"> 
    139     <value>Erasing cluster tips...</value> 
    140   </data> 
    141   <data name="Erasing unused space..." xml:space="preserve"> 
    142     <value>Erasing unused space..</value> 
    143   </data> 
    144   <data name="Old resident file system table files" xml:space="preserve"> 
    145     <value>Old resident file system table files</value> 
    146   </data> 
    147   <data name="Removing temporary files..." xml:space="preserve"> 
    148     <value>Removing temporary files...</value> 
    149   </data> 
    150   <data name="Erasing unused directory structures..." xml:space="preserve"> 
    151     <value>Erasing unused directory structures...</value> 
    152   </data> 
    153   <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
    154     <value>The file {0} was not erased as the file does not exist.</value> 
    155   </data> 
    156   <data name="Erasing files..." xml:space="preserve"> 
    157     <value>Erasing files...</value> 
    158   </data> 
    159   <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
    160     <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 
    161   </data> 
    162   <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 
    163     <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value> 
    164   </data> 
    165   <data name="Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})" xml:space="preserve"> 
    166     <value>Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})</value> 
    167   </data> 
    168   <data name="Removing folders..." xml:space="preserve"> 
    169     <value>Removing folders...</value> 
    170   </data> 
    171   <data name="Emptying recycle bin..." xml:space="preserve"> 
    172     <value>Emptying recycle bin...</value> 
     120  <data name="{0} (1 pass)" xml:space="preserve"> 
     121    <value>{0} (1 pass)</value> 
     122  </data> 
     123  <data name="{0} ({1} passes)" xml:space="preserve"> 
     124    <value>{0} ({1} passes)</value> 
     125  </data> 
     126  <data name="Random" xml:space="preserve"> 
     127    <value>Random</value> 
     128  </data> 
     129  <data name="(default)" xml:space="preserve"> 
     130    <value>(default)</value> 
    173131  </data> 
    174132  <data name="The selected erasure method is not supported for this erasure target." xml:space="preserve"> 
    175133    <value>The selected erasure method is not supported for this erasure target.</value> 
    176134  </data> 
    177   <data name="Unused disk space ({0})" xml:space="preserve"> 
    178     <value>Unused disk space ({0})</value> 
    179   </data> 
    180   <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
    181     <value>Could not erase files and subfolders in {0} because {1}</value> 
    182   </data> 
    183   <data name="Recycle Bin" xml:space="preserve"> 
    184     <value>Recycle Bin</value> 
    185   </data> 
    186135  <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 
    187136    <value>EntropySource GUID not found: {0}</value> 
     
    193142    <value>PRNG not found: {0}</value> 
    194143  </data> 
    195   <data name="Invalid file path" xml:space="preserve"> 
    196     <value>Invalid file path</value> 
    197   </data> 
    198144  <data name="Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data." xml:space="preserve"> 
    199145    <value>Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data.</value> 
     
    202148    <value>The file system on the drive {0} is not supported.</value> 
    203149  </data> 
    204   <data name="Invalid folder path" xml:space="preserve"> 
    205     <value>Invalid folder path</value> 
    206   </data> 
    207   <data name="The path you selected is invalid." xml:space="preserve"> 
    208     <value>The path you selected is invalid.</value> 
     150  <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
     151    <value>Could not load the plugin {0}.\n\nThe error returned was: {1}</value> 
    209152  </data> 
    210153  <data name="Eraser" xml:space="preserve"> 
    211154    <value>Eraser</value> 
    212155  </data> 
    213   <data name="{0} (1 pass)" xml:space="preserve"> 
    214     <value>{0} (1 pass)</value> 
    215   </data> 
    216   <data name="{0} ({1} passes)" xml:space="preserve"> 
    217     <value>{0} ({1} passes)</value> 
    218   </data> 
    219   <data name="Random" xml:space="preserve"> 
    220     <value>Random</value> 
    221   </data> 
    222   <data name="(default)" xml:space="preserve"> 
    223     <value>(default)</value> 
    224   </data> 
    225   <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    226     <value>Could not load the plugin {0}.\n\nThe error returned was: {1}</value> 
    227   </data> 
    228156  <data name="Running on restart" xml:space="preserve"> 
    229157    <value>Running on restart</value> 
  • trunk/eraser/Eraser.Manager/Strings.it.resx

    r2034 r2036  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    119119  </resheader> 
    120   <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
    121     <value>Il programma non ha i permessi richiesti per pulire lo spazio non utilizzato sul disco. Eseguire il programma come amministratore e riprovare l'operazione</value> 
    122   </data> 
    123   <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
     120  <data name="{0} (1 pass)" xml:space="preserve"> 
     121    <value>{0} (1 passo)</value> 
     122  </data> 
     123  <data name="{0} ({1} passes)" xml:space="preserve"> 
     124    <value>{0} ({1} passi)</value> 
     125  </data> 
     126  <data name="Random" xml:space="preserve"> 
     127    <value>Casuale</value> 
     128  </data> 
     129  <data name="(default)" xml:space="preserve"> 
    124130    <value>(Untranslated)</value> 
    125   </data> 
    126   <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
    127     <value>(Untranslated)</value> 
    128   </data> 
    129   <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
    130     <value>Il disco {0} ha il disk quota attivo. Ciò impedisce la pulitura completa dello spazio non usato e comporta problemi di sicurezza.</value> 
    131   </data> 
    132   <data name="Searching for files' cluster tips..." xml:space="preserve"> 
    133     <value>Ricerca dei cluster tips dei files...</value> 
    134   </data> 
    135   <data name="The task was cancelled." xml:space="preserve"> 
    136     <value>L'operazione è stata cancellata.</value> 
    137   </data> 
    138   <data name="Erasing cluster tips..." xml:space="preserve"> 
    139     <value>Pulizia dei cluster tips...</value> 
    140   </data> 
    141   <data name="Erasing unused space..." xml:space="preserve"> 
    142     <value>Pulizia dello spazioni non usato...</value> 
    143   </data> 
    144   <data name="Old resident file system table files" xml:space="preserve"> 
    145     <value>Vecchia tabella di sistema dei file residenti</value> 
    146   </data> 
    147   <data name="Removing temporary files..." xml:space="preserve"> 
    148     <value>Rimozione files temporanei...</value> 
    149   </data> 
    150   <data name="Erasing unused directory structures..." xml:space="preserve"> 
    151     <value>Pulizia delle strutture di cartelle non usate...</value> 
    152   </data> 
    153   <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
    154     <value>Il file {0} non è stato pulito perchè il file non esiste.</value> 
    155   </data> 
    156   <data name="Erasing files..." xml:space="preserve"> 
    157     <value>Pulizia dei files...</value> 
    158   </data> 
    159   <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
    160     <value>Il file {0} non può essere pulito perchè è compresso, crittato o distribuito.</value> 
    161   </data> 
    162   <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 
    163     <value>Il file {0} non può essere pulito perchè i permessi su di esso ne impediscono l'accesso.</value> 
    164   </data> 
    165   <data name="Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})" xml:space="preserve"> 
    166     <value>(Untranslated)</value> 
    167   </data> 
    168   <data name="Removing folders..." xml:space="preserve"> 
    169     <value>Rimozione cartelle...</value> 
    170   </data> 
    171   <data name="Emptying recycle bin..." xml:space="preserve"> 
    172     <value>Pulizia del cestino...</value> 
    173131  </data> 
    174132  <data name="The selected erasure method is not supported for this erasure target." xml:space="preserve"> 
    175133    <value>(Untranslated)</value> 
    176134  </data> 
    177   <data name="Unused disk space ({0})" xml:space="preserve"> 
    178     <value>Spazio disco inutilizzato ({0})</value> 
    179   </data> 
    180   <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
    181     <value>Impossibile pulire file e sottocartelle in {0} a causa di {1}</value> 
    182   </data> 
    183   <data name="Recycle Bin" xml:space="preserve"> 
    184     <value>Cestino</value> 
    185   </data> 
    186135  <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 
    187136    <value>EntropySource GUID non trovato: {0}</value> 
     
    193142    <value>PRNG not found: {0}</value> 
    194143  </data> 
    195   <data name="Invalid file path" xml:space="preserve"> 
    196     <value>(Untranslated)</value> 
    197   </data> 
    198144  <data name="Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data." xml:space="preserve"> 
    199145    <value>E' stata selezionata una "Plausible deniability", but no decoy files were found. The current file has been only replaced with random data.</value> 
     
    202148    <value>Il tipo di file system sul disco {0} non è supportato.</value> 
    203149  </data> 
    204   <data name="Invalid folder path" xml:space="preserve"> 
    205     <value>(Untranslated)</value> 
    206   </data> 
    207   <data name="The path you selected is invalid." xml:space="preserve"> 
    208     <value>(Untranslated)</value> 
     150  <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
     151    <value>Impossibile caricare il plugin {0}.\n\nL'errore ricevuto è stato: {1}</value> 
    209152  </data> 
    210153  <data name="Eraser" xml:space="preserve"> 
    211154    <value>(Untranslated)</value> 
    212155  </data> 
    213   <data name="{0} (1 pass)" xml:space="preserve"> 
    214     <value>{0} (1 passo)</value> 
    215   </data> 
    216   <data name="{0} ({1} passes)" xml:space="preserve"> 
    217     <value>{0} ({1} passi)</value> 
    218   </data> 
    219   <data name="Random" xml:space="preserve"> 
    220     <value>Casuale</value> 
    221   </data> 
    222   <data name="(default)" xml:space="preserve"> 
    223     <value>(Untranslated)</value> 
    224   </data> 
    225   <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    226     <value>Impossibile caricare il plugin {0}.\n\nL'errore ricevuto è stato: {1}</value> 
    227   </data> 
    228156  <data name="Running on restart" xml:space="preserve"> 
    229157    <value>Esecuzione al riavvio</value> 
  • trunk/eraser/Eraser.Manager/Strings.nl.resx

    r2034 r2036  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    119119  </resheader> 
    120   <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
    121     <value>(Untranslated)</value> 
    122   </data> 
    123   <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
    124     <value>(Untranslated)</value> 
    125   </data> 
    126   <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
    127     <value>(Untranslated)</value> 
    128   </data> 
    129   <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
    130     <value>(Untranslated)</value> 
    131   </data> 
    132   <data name="Searching for files' cluster tips..." xml:space="preserve"> 
    133     <value>(Untranslated)</value> 
    134   </data> 
    135   <data name="The task was cancelled." xml:space="preserve"> 
    136     <value>(Untranslated)</value> 
    137   </data> 
    138   <data name="Erasing cluster tips..." xml:space="preserve"> 
    139     <value>(Untranslated)</value> 
    140   </data> 
    141   <data name="Erasing unused space..." xml:space="preserve"> 
    142     <value>(Untranslated)</value> 
    143   </data> 
    144   <data name="Old resident file system table files" xml:space="preserve"> 
    145     <value>(Untranslated)</value> 
    146   </data> 
    147   <data name="Removing temporary files..." xml:space="preserve"> 
    148     <value>(Untranslated)</value> 
    149   </data> 
    150   <data name="Erasing unused directory structures..." xml:space="preserve"> 
    151     <value>(Untranslated)</value> 
    152   </data> 
    153   <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
    154     <value>(Untranslated)</value> 
    155   </data> 
    156   <data name="Erasing files..." xml:space="preserve"> 
    157     <value>(Untranslated)</value> 
    158   </data> 
    159   <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
    160     <value>(Untranslated)</value> 
    161   </data> 
    162   <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 
    163     <value>(Untranslated)</value> 
    164   </data> 
    165   <data name="Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})" xml:space="preserve"> 
    166     <value>(Untranslated)</value> 
    167   </data> 
    168   <data name="Removing folders..." xml:space="preserve"> 
    169     <value>(Untranslated)</value> 
    170   </data> 
    171   <data name="Emptying recycle bin..." xml:space="preserve"> 
     120  <data name="{0} (1 pass)" xml:space="preserve"> 
     121    <value>(Untranslated)</value> 
     122  </data> 
     123  <data name="{0} ({1} passes)" xml:space="preserve"> 
     124    <value>(Untranslated)</value> 
     125  </data> 
     126  <data name="Random" xml:space="preserve"> 
     127    <value>(Untranslated)</value> 
     128  </data> 
     129  <data name="(default)" xml:space="preserve"> 
    172130    <value>(Untranslated)</value> 
    173131  </data> 
     
    175133    <value>(Untranslated)</value> 
    176134  </data> 
    177   <data name="Unused disk space ({0})" xml:space="preserve"> 
    178     <value>(Untranslated)</value> 
    179   </data> 
    180   <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
    181     <value>(Untranslated)</value> 
    182   </data> 
    183   <data name="Recycle Bin" xml:space="preserve"> 
    184     <value>(Untranslated)</value> 
    185   </data> 
    186135  <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 
    187136    <value>(Untranslated)</value> 
     
    193142    <value>(Untranslated)</value> 
    194143  </data> 
    195   <data name="Invalid file path" xml:space="preserve"> 
    196     <value>(Untranslated)</value> 
    197   </data> 
    198144  <data name="Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data." xml:space="preserve"> 
    199145    <value>(Untranslated)</value> 
     
    202148    <value>(Untranslated)</value> 
    203149  </data> 
    204   <data name="Invalid folder path" xml:space="preserve"> 
    205     <value>(Untranslated)</value> 
    206   </data> 
    207   <data name="The path you selected is invalid." xml:space="preserve"> 
     150  <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    208151    <value>(Untranslated)</value> 
    209152  </data> 
     
    211154    <value>(Untranslated)</value> 
    212155  </data> 
    213   <data name="{0} (1 pass)" xml:space="preserve"> 
    214     <value>(Untranslated)</value> 
    215   </data> 
    216   <data name="{0} ({1} passes)" xml:space="preserve"> 
    217     <value>(Untranslated)</value> 
    218   </data> 
    219   <data name="Random" xml:space="preserve"> 
    220     <value>(Untranslated)</value> 
    221   </data> 
    222   <data name="(default)" xml:space="preserve"> 
    223     <value>(Untranslated)</value> 
    224   </data> 
    225   <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    226     <value>(Untranslated)</value> 
    227   </data> 
    228156  <data name="Running on restart" xml:space="preserve"> 
    229157    <value>(Untranslated)</value> 
  • trunk/eraser/Eraser.Manager/Strings.pl.resx

    r2034 r2036  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    119119  </resheader> 
    120   <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
    121     <value>Program nie wystarczających praw dostępu do wymazania nieużywanego miejsca dysku. Uruchom program jako administrator i powtórz czynność.</value> 
    122   </data> 
    123   <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
    124     <value>Program nie wystarczających praw dostępu do wymazania nieużywanego miejsca dysku.</value> 
    125   </data> 
    126   <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
    127     <value>Komputer miał włączoną opcję przywracania systemu lub kopiowania woluminów w tle. To mogło stworzyć kopię plików przechowywanych na dysku oraz ich przywrócenie, co powinno alarmować o zagrożonym bezpieczeństwie.</value> 
    128   </data> 
    129   <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
    130     <value>Dysk {0} ma włączone ograniczenie rozmiaru (quota). Uniemożliwi to całkowite wymazanie nieużywanego miejsca, co powinno alarmować o zagrożonym bezpieczeństwie.</value> 
    131   </data> 
    132   <data name="Searching for files' cluster tips..." xml:space="preserve"> 
    133     <value>Poszukiwanie resztek klastrów...</value> 
    134   </data> 
    135   <data name="The task was cancelled." xml:space="preserve"> 
    136     <value>Zadanie zostało anulowane.</value> 
    137   </data> 
    138   <data name="Erasing cluster tips..." xml:space="preserve"> 
    139     <value>Wymazywanie resztek klastrów...</value> 
    140   </data> 
    141   <data name="Erasing unused space..." xml:space="preserve"> 
    142     <value>Wymazywanie nieużywanego miejsca...</value> 
    143   </data> 
    144   <data name="Old resident file system table files" xml:space="preserve"> 
    145     <value>Stara rezydentna tabela systemu plików</value> 
    146   </data> 
    147   <data name="Removing temporary files..." xml:space="preserve"> 
    148     <value>Usuwanie plików tymczasowych...</value> 
    149   </data> 
    150   <data name="Erasing unused directory structures..." xml:space="preserve"> 
    151     <value>Wymazywanie nieużywanej struktury katalogów...</value> 
    152   </data> 
    153   <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
    154     <value>Plik {0} nie został wymazany, bo nie istnieje.</value> 
    155   </data> 
    156   <data name="Erasing files..." xml:space="preserve"> 
    157     <value>Wymazywanie plików...</value> 
    158   </data> 
    159   <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
    160     <value>Plik {0} nie mógł być wymazany, bo był skompresowany, zaszyfrowany lub rozrzedzony.</value> 
    161   </data> 
    162   <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 
    163     <value>Plik {0} nie mógł być wymazany z powodu ograniczonego prawa dostępu do pliku.</value> 
    164   </data> 
    165   <data name="Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})" xml:space="preserve"> 
    166     <value>(Untranslated)</value> 
    167   </data> 
    168   <data name="Removing folders..." xml:space="preserve"> 
    169     <value>Usuwanie katalogów...</value> 
    170   </data> 
    171   <data name="Emptying recycle bin..." xml:space="preserve"> 
    172     <value>Opróżnianie kosza...</value> 
     120  <data name="{0} (1 pass)" xml:space="preserve"> 
     121    <value>{0} (1 przebieg)</value> 
     122  </data> 
     123  <data name="{0} ({1} passes)" xml:space="preserve"> 
     124    <value>{0} ({1} przebiegów)</value> 
     125  </data> 
     126  <data name="Random" xml:space="preserve"> 
     127    <value>Losowy</value> 
     128  </data> 
     129  <data name="(default)" xml:space="preserve"> 
     130    <value>(domyślny)</value> 
    173131  </data> 
    174132  <data name="The selected erasure method is not supported for this erasure target." xml:space="preserve"> 
    175133    <value>(Untranslated)</value> 
    176134  </data> 
    177   <data name="Unused disk space ({0})" xml:space="preserve"> 
    178     <value>Nieużywane miejsce dysku ({0})</value> 
    179   </data> 
    180   <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
    181     <value>Nie można było wymazać plików i podkatalogów w {0} ponieważ {1}</value> 
    182   </data> 
    183   <data name="Recycle Bin" xml:space="preserve"> 
    184     <value>Kosz</value> 
    185   </data> 
    186135  <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 
    187136    <value>Nie znaleziono źródła entropii GUID: {0}</value> 
     
    193142    <value>Nie znaleziono PRNG: {0}</value> 
    194143  </data> 
    195   <data name="Invalid file path" xml:space="preserve"> 
    196     <value>(Untranslated)</value> 
    197   </data> 
    198144  <data name="Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data." xml:space="preserve"> 
    199145    <value>Wybrano wymazywanie z opcją prawdopodobnego zaprzeczenia, ale nie wybrano żadnych plików na przynęte. Obecny plik został zastąpiony danymi losowymi.</value> 
     
    202148    <value>System plików napędu {0} nie jest wspierany.</value> 
    203149  </data> 
    204   <data name="Invalid folder path" xml:space="preserve"> 
    205     <value>(Untranslated)</value> 
    206   </data> 
    207   <data name="The path you selected is invalid." xml:space="preserve"> 
    208     <value>(Untranslated)</value> 
     150  <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
     151    <value>Nie można było załadować wtyczki {0}.\n\nWystąpił błąd: {1}</value> 
    209152  </data> 
    210153  <data name="Eraser" xml:space="preserve"> 
    211154    <value>Eraser</value> 
    212155  </data> 
    213   <data name="{0} (1 pass)" xml:space="preserve"> 
    214     <value>{0} (1 przebieg)</value> 
    215   </data> 
    216   <data name="{0} ({1} passes)" xml:space="preserve"> 
    217     <value>{0} ({1} przebiegów)</value> 
    218   </data> 
    219   <data name="Random" xml:space="preserve"> 
    220     <value>Losowy</value> 
    221   </data> 
    222   <data name="(default)" xml:space="preserve"> 
    223     <value>(domyślny)</value> 
    224   </data> 
    225   <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    226     <value>Nie można było załadować wtyczki {0}.\n\nWystąpił błąd: {1}</value> 
    227   </data> 
    228156  <data name="Running on restart" xml:space="preserve"> 
    229157    <value>Uruchomienie po restarcie</value> 
  • trunk/eraser/Eraser.Manager/Strings.resx

    r2034 r2036  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    119119  </resheader> 
    120   <data name="The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation." xml:space="preserve"> 
    121     <value>The program does not have the required permissions to erase the unused space on disk. Run the program as an administrator and retry the operation.</value> 
    122   </data> 
    123   <data name="The program does not have the required permissions to erase the unused space on disk." xml:space="preserve"> 
    124     <value>The program does not have the required permissions to erase the unused space on disk.</value> 
    125   </data> 
    126   <data name="This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern." xml:space="preserve"> 
    127     <value>This computer has had System Restore or Volume Shadow Copies enabled. This may allow copies of files stored on the disk to be recovered and pose a security concern.</value> 
    128   </data> 
    129   <data name="The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern." xml:space="preserve"> 
    130     <value>The drive {0} has disk quotas active. This will prevent the complete erasure of unused space and may pose a security concern.</value> 
    131   </data> 
    132   <data name="Searching for files' cluster tips..." xml:space="preserve"> 
    133     <value>Searching for files' cluster tips...</value> 
    134   </data> 
    135   <data name="The task was cancelled." xml:space="preserve"> 
    136     <value>The task was cancelled.</value> 
    137   </data> 
    138   <data name="Erasing cluster tips..." xml:space="preserve"> 
    139     <value>Erasing cluster tips...</value> 
    140   </data> 
    141   <data name="Erasing unused space..." xml:space="preserve"> 
    142     <value>Erasing unused space...</value> 
    143   </data> 
    144   <data name="Old resident file system table files" xml:space="preserve"> 
    145     <value>Old resident file system table files</value> 
    146   </data> 
    147   <data name="Removing temporary files..." xml:space="preserve"> 
    148     <value>Removing temporary files...</value> 
    149   </data> 
    150   <data name="Erasing unused directory structures..." xml:space="preserve"> 
    151     <value>Erasing unused directory structures...</value> 
    152   </data> 
    153   <data name="The file {0} was not erased as the file does not exist." xml:space="preserve"> 
    154     <value>The file {0} was not erased as the file does not exist.</value> 
    155   </data> 
    156   <data name="Erasing files..." xml:space="preserve"> 
    157     <value>Erasing files...</value> 
    158   </data> 
    159   <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 
    160     <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 
    161   </data> 
    162   <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 
    163     <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value> 
    164   </data> 
    165   <data name="Could not force closure of file \&quot;{0}\&quot; {1}(locked by {0})" xml:space="preserve"> 
    166     <value>Could not force closure of file \"{0}\" {1}(locked by {0})</value> 
    167   </data> 
    168   <data name="Removing folders..." xml:space="preserve"> 
    169     <value>Removing folders...</value> 
    170   </data> 
    171   <data name="Emptying recycle bin..." xml:space="preserve"> 
    172     <value>Emptying recycle bin...</value> 
     120  <data name="{0} (1 pass)" xml:space="preserve"> 
     121    <value>{0} (1 pass)</value> 
     122  </data> 
     123  <data name="{0} ({1} passes)" xml:space="preserve"> 
     124    <value>{0} ({1} passes)</value> 
     125  </data> 
     126  <data name="Random" xml:space="preserve"> 
     127    <value>Random</value> 
     128  </data> 
     129  <data name="(default)" xml:space="preserve"> 
     130    <value>(default)</value> 
    173131  </data> 
    174132  <data name="The selected erasure method is not supported for this erasure target." xml:space="preserve"> 
    175133    <value>The selected erasure method is not supported for this erasure target.</value> 
    176134  </data> 
    177   <data name="Unused disk space ({0})" xml:space="preserve"> 
    178     <value>Unused disk space ({0})</value> 
    179   </data> 
    180   <data name="Could not erase files and subfolders in {0} because {1}" xml:space="preserve"> 
    181     <value>Could not erase files and subfolders in {0} because {1}</value> 
    182   </data> 
    183   <data name="Recycle Bin" xml:space="preserve"> 
    184     <value>Recycle Bin</value> 
    185   </data> 
    186135  <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 
    187136    <value>EntropySource GUID not found: {0}</value> 
     
    193142    <value>PRNG not found: {0}</value> 
    194143  </data> 
    195   <data name="Invalid file path" xml:space="preserve"> 
    196     <value>Invalid file path</value> 
    197   </data> 
    198144  <data name="Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data." xml:space="preserve"> 
    199145    <value>Plausible deniability was selected, but no decoy files were found. The current file has been only replaced with random data.</value> 
     
    202148    <value>The file system on the drive {0} is not supported.</value> 
    203149  </data> 
    204   <data name="Invalid folder path" xml:space="preserve"> 
    205     <value>Invalid folder path</value> 
    206   </data> 
    207   <data name="The path you selected is invalid." xml:space="preserve"> 
    208     <value>The path you selected is invalid.</value> 
     150  <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
     151    <value>Could not load the plugin {0}.\n\nThe error returned was: {1}</value> 
    209152  </data> 
    210153  <data name="Eraser" xml:space="preserve"> 
    211154    <value>Eraser</value> 
    212155  </data> 
    213   <data name="{0} (1 pass)" xml:space="preserve"> 
    214     <value>{0} (1 pass)</value> 
    215   </data> 
    216   <data name="{0} ({1} passes)" xml:space="preserve"> 
    217     <value>{0} ({1} passes)</value> 
    218   </data> 
    219   <data name="Random" xml:space="preserve"> 
    220     <value>Random</value> 
    221   </data> 
    222   <data name="(default)" xml:space="preserve"> 
    223     <value>(default)</value> 
    224   </data> 
    225   <data name="Could not load the plugin {0}.\n\nThe error returned was: {1}" xml:space="preserve"> 
    226     <value>Could not load the plugin {0}.\n\nThe error returned was: {1}</value> 
    227   </data> 
    228156  <data name="Running on restart" xml:space="preserve"> 
    229157    <value>Running on restart</value> 
Note: See TracChangeset for help on using the changeset viewer.