Changeset 2004 for trunk/eraser


Ignore:
Timestamp:
05/01/10 13:02:15 (4 years ago)
Author:
lowjoel
Message:

Use response files when the command line may be too long. This allows infinitely large numbers of files to be erased.

Location:
trunk/eraser/ShellExt
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser/ShellExt/CtxMenu.cpp

    r1828 r2004  
    836836        std::wstring finalParameters; 
    837837        { 
    838             std::wostringstream parametersStrm; 
    839             parametersStrm << "\"" << action << L"\" /quiet " << parameters; 
    840             finalParameters = parametersStrm.str(); 
     838            //Depending on the length of the argument, we either use a response file 
     839            //or pass the arguments directly. 
     840            if (parameters.length() > 8192) 
     841            { 
     842                //The parameters are greater than 8kb, the response file would be 
     843                //more efficient. 
     844                wchar_t buffer[MAX_PATH]; 
     845                wchar_t tempPath[MAX_PATH]; 
     846                if (!GetTempPath(sizeof(tempPath) / sizeof(tempPath[0]), tempPath) || 
     847                    !GetTempFileName(tempPath, L"ers", 0, buffer)) 
     848                { 
     849                    throw LoadString(IDS_ERROR_CANNOT_GENERATE_TEMP_FILE); 
     850                } 
     851 
     852                std::wofstream stream(buffer); 
     853                stream << "\"" << action << L"\" /quiet " << parameters; 
     854 
     855                finalParameters = L"\"@"; 
     856                finalParameters += buffer; 
     857                finalParameters += '"'; 
     858            } 
     859            else 
     860            { 
     861                //Short command line, pass directly to the program 
     862                std::wostringstream stream; 
     863                stream << "\"" << action << L"\" /quiet " << parameters; 
     864                finalParameters = stream.str(); 
     865            } 
    841866        } 
    842867 
  • trunk/eraser/ShellExt/ShellExt.rc

    r1906 r2004  
    3737 
    3838///////////////////////////////////////////////////////////////////////////// 
    39 // English (U.S.) resources 
     39// Polish resources 
     40 
     41#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PLK) 
     42#ifdef _WIN32 
     43LANGUAGE LANG_POLISH, SUBLANG_DEFAULT 
     44#pragma code_page(1250) 
     45#endif //_WIN32 
     46 
     47///////////////////////////////////////////////////////////////////////////// 
     48// 
     49// String Table 
     50// 
     51 
     52STRINGTABLE  
     53BEGIN 
     54    IDS_PROJNAME            "EraserShellExt" 
     55    IDS_ERASER              "Eraser" 
     56    IDS_ERASERSHELLEXT      "Eraser Shell Extension" 
     57END 
     58 
     59STRINGTABLE  
     60BEGIN 
     61    IDS_ERROR_UNKNOWN       "Wyst¹pi³ nieznany b³¹d." 
     62    IDS_ERROR_UNKNOWNACTION "Wyst¹pi³o niew³aœciwe ¿¹danie polecenia o ID %d .\n\nEraser nie móg³ przetworzyæ ¿¹dania." 
     63    IDS_ERROR_CANNOTFINDERASER  
     64                            "Aplikacja Eraser nie mog³abyæ uruchomiona. Upewnij siê, ¿e twoja instalacja Erasera nie jest uszkodzona: spróbuj ponownie uruchomiæ kreatora instalacji Eraser i wybierz opcjê napraw instlacje." 
     65    IDS_ERROR_ACCESSDENIED  "Odmówiono dostêpu do Erasera. To mo¿e byæ z powodu braku uprawnieñ administratora, lub odwo³ano ¿¹danie Uruchom jako administrator." 
     66    IDS_ERROR_TOO_MANY_FILES  
     67                            "Polecenie nie mog³o zrealizowane przez bie¿¹ce wyst¹pienie Erasera, poniewa¿ zbyt wiele plików by³o wybranych do wymazania.\n\nWybierz mniej plików i spróbuj ponownie." 
     68    IDS_ERROR_MISC          "Wyst¹pi³ b³¹d:\n\n%s" 
     69END 
     70 
     71STRINGTABLE  
     72BEGIN 
     73    IDS_HELPSTRING_ERASE    "Wymazuje wybrane elementy." 
     74    IDS_HELPSTRING_ERASEONRESTART  
     75                            "Wymazuje wybrane elementy przy ponownym uruchomieniu komputera." 
     76    IDS_HELPSTRING_ERASEUNUSEDSPACE  
     77                            "Wymazuje nieu¿ywane miejsce wybranych napêdów." 
     78    IDS_HELPSTRING_SECUREMOVE  
     79                            "Przenieœ bezpiecznie zaznaczone elementy do nowej lokalizacji." 
     80END 
     81 
     82STRINGTABLE  
     83BEGIN 
     84    IDS_ACTION_ERASE        "W&yma¿" 
     85    IDS_ACTION_ERASERESTART "Wyma¿ przy ponownym u&ruchomieniu" 
     86    IDS_ACTION_ERASEUNUSEDSPACE "Wyma¿ Nnie&u¿ywane miejsce" 
     87    IDS_ACTION_SECUREMOVE   "Bezpieczne przeniesienie" 
     88END 
     89 
     90#endif    // Polish resources 
     91///////////////////////////////////////////////////////////////////////////// 
     92 
     93 
     94///////////////////////////////////////////////////////////////////////////// 
     95// English (Neutral) resources 
    4096 
    4197#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 
     
    119175 
    120176IDR_ERASERSHELLEXT      REGISTRY                "ShellExt.rgs" 
    121 ///////////////////////////////////////////////////////////////////////////// 
    122177 
    123178///////////////////////////////////////////////////////////////////////////// 
     
    143198                            "The command could not be sent to the running Eraser instance because too many files were selected for erasure.\n\nSelect fewer files and try again." 
    144199    IDS_ERROR_MISC          "An error has occurred:\n\n%s" 
     200    IDS_ERROR_CANNOT_GENERATE_TEMP_FILE  
     201                            "Eraser could not generate a temporary file to store the list of files selected for erasure." 
    145202END 
    146203 
     
    164221END 
    165222 
    166 #endif    // English (U.S.) resources 
    167  
    168  
    169 ///////////////////////////////////////////////////////////////////////////// 
    170 // Italian (Italy) resources 
     223#endif    // English (Neutral) resources 
     224///////////////////////////////////////////////////////////////////////////// 
     225 
     226 
     227///////////////////////////////////////////////////////////////////////////// 
     228// Italian (Neutral) resources 
    171229 
    172230#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA) 
     
    219277END 
    220278 
    221 #endif    // Italian (Italy) resources 
    222 ///////////////////////////////////////////////////////////////////////////// 
    223  
    224 ///////////////////////////////////////////////////////////////////////////// 
    225 // Polish (Poland) resources 
    226  
    227 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_POL) 
    228 #ifdef _WIN32 
    229 LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL 
    230 #pragma code_page(1250) 
    231 #endif //_WIN32 
    232  
    233 ///////////////////////////////////////////////////////////////////////////// 
    234 // 
    235 // String Table 
    236 // 
    237  
    238 STRINGTABLE  
    239 BEGIN 
    240     IDS_PROJNAME            "EraserShellExt" 
    241     IDS_ERASER              "Eraser" 
    242     IDS_ERASERSHELLEXT      "Eraser Shell Extension" 
    243 END 
    244  
    245 STRINGTABLE  
    246 BEGIN 
    247     IDS_ERROR_UNKNOWN       "Wyst¹pi³ nieznany b³¹d." 
    248     IDS_ERROR_UNKNOWNACTION "Wyst¹pi³o niew³aœciwe ¿¹danie polecenia o ID %d .\n\nEraser nie móg³ przetworzyæ ¿¹dania." 
    249     IDS_ERROR_CANNOTFINDERASER  
    250                             "Aplikacja Eraser nie mog³abyæ uruchomiona. Upewnij siê, ¿e twoja instalacja Erasera nie jest uszkodzona: spróbuj ponownie uruchomiæ kreatora instalacji Eraser i wybierz opcjê napraw instlacje." 
    251     IDS_ERROR_ACCESSDENIED  "Odmówiono dostêpu do Erasera. To mo¿e byæ z powodu braku uprawnieñ administratora, lub odwo³ano ¿¹danie Uruchom jako administrator." 
    252     IDS_ERROR_TOO_MANY_FILES  
    253                             "Polecenie nie mog³o zrealizowane przez bie¿¹ce wyst¹pienie Erasera, poniewa¿ zbyt wiele plików by³o wybranych do wymazania.\n\nWybierz mniej plików i spróbuj ponownie." 
    254     IDS_ERROR_MISC          "Wyst¹pi³ b³¹d:\n\n%s" 
    255 END 
    256  
    257 STRINGTABLE  
    258 BEGIN 
    259     IDS_HELPSTRING_ERASE    "Wymazuje wybrane elementy." 
    260     IDS_HELPSTRING_ERASEONRESTART  
    261                             "Wymazuje wybrane elementy przy ponownym uruchomieniu komputera." 
    262     IDS_HELPSTRING_ERASEUNUSEDSPACE  
    263                             "Wymazuje nieu¿ywane miejsce wybranych napêdów." 
    264     IDS_HELPSTRING_SECUREMOVE  
    265                             "Przenieœ bezpiecznie zaznaczone elementy do nowej lokalizacji." 
    266 END 
    267  
    268 STRINGTABLE  
    269 BEGIN 
    270     IDS_ACTION_ERASE        "W&yma¿" 
    271     IDS_ACTION_ERASERESTART "Wyma¿ przy ponownym u&ruchomieniu" 
    272     IDS_ACTION_ERASEUNUSEDSPACE "Wyma¿ Nnie&u¿ywane miejsce" 
    273     IDS_ACTION_SECUREMOVE   "Bezpieczne przeniesienie" 
    274 END 
    275  
    276 #endif    // Polish (Poland) resources 
     279#endif    // Italian (Neutral) resources 
    277280///////////////////////////////////////////////////////////////////////////// 
    278281 
  • trunk/eraser/ShellExt/resource.h

    r1299 r2004  
    2121#define IDS_ERROR_TOO_MANY_FILES        404 
    2222#define IDS_ERROR_MISC                  405 
     23#define IDS_ERROR_CANNOT_GENERATE_TEMP_FILE 406 
    2324 
    2425// Next default values for new objects 
  • trunk/eraser/ShellExt/stdafx.h

    r1675 r2004  
    5151#include <string> 
    5252#include <sstream> 
     53#include <fstream> 
    5354 
    5455#undef max 
Note: See TracChangeset for help on using the changeset viewer.