Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    c++ percorso "generale"

    salve gente.. sto realizzando un cleaner per windows per la pulizia di cookies e temp.
    vorrei sapere come posso fare per rendere il mio programma disponibile per tutti i computer (con utenti diversi).
    allora.. io devo cancellare la directory cookies che nel mio computer si trova in:
    c:\documents and settings\amministratore\cookies

    se domani cambio utente il mio programma non funziona +... allora... mi potreste spiegare come rendere il percorso che scrivo un percorso generale?

    io avevo già provato con %userprofile%\cookies ma non funziona....

    aspetto risposte.... grazie...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Leggi la variabile d'ambiente USERPROFILE ...

    Ma il codice che non funziona, qual e'? Come hai usato %userprofile% ?

  3. #3
    Usa la API SHGetFolderPath per recuperare il percorso della cartella oppure la ExpandEnvironmentStrings per espandere la variabile d'ambiente nel suo valore ("userprofile"=>"c:\documents and settings\nomeutente").
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    allora.. la mia funzione si chiama rmdirectory()
    quindi avevo scritto:

    rmdirectory("%userprofile%\\cookies");

    ma non funziona!

    scusa... mi potete fare un esempio di codice sorgente?!?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Gia' ... ma qual e' il codice della funzione?

  6. #6
    void rmdirectory(const char* dir)
    {
    char fpath[MAX_PATH];
    char fname[MAX_PATH];

    HANDLE hList;
    TCHAR szDir[MAX_PATH];
    WIN32_FIND_DATA FileData;
    snprintf(szDir,MAX_PATH, "%s\\*", dir);
    hList = FindFirstFile(szDir, &FileData);
    if (hList == INVALID_HANDLE_VALUE){
    return;
    }
    do{
    strncpy(fname,FileData.cFileName,MAX_PATH);

    if (!strcmp(fname,".")) continue;
    if (!strcmp(fname,"..")) continue;

    snprintf(fpath,MAX_PATH,"%s\\%s",dir,fname);
    if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) deldir(fpath);
    else DeleteFile(fpath);

    } while (FindNextFile(hList, &FileData));

    FindClose(hList);
    return;
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prova a chiamare la funzione con

    rmdirectory(strcat(getenv("USERPROFILE"), "\\cookies"));

    P.S. E poi dai anche un'occhiata alle API che ti ha proposto MItaly ...

  8. #8
    codice:
    #include <windows.h>
    //..
    char buffer[MAX_SIZE];
    if (ExpandEnvironmentStringsA("%userprofile%\\cookies",buffer,MAX_SIZE)==0)
    {
        cout<<"Impossibile espandere la variabile d'ambiente.";
    }
    else
    {
        rmdirectory(buffer);
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    mi da errore sul max_size e comunque mi dice che c'è una conversione da const char* a dword su buffer....

  10. #10
    Originariamente inviato da oregon
    codice:
    rmdirectory(strcat(getenv("USERPROFILE"), "\\cookies"));
    VVoVe:
    Oregon, io ti stimo moltissimo, ma questo codice non va assolutamente usato; cito dalla MSDN:
    It is not safe to modify the value of the environment variable using the returned pointer.
    E comunque vale sempre la regola "mai effettuare append a stringhe che non si sa come sono state allocate". Semmai:
    codice:
    char buffer[255]; //I percorsi non sono mai più lunghi di 255 caratteri...
    if (strlen(getenv("USERPROFILE"))>(sizeof(buffer)-sizeof("\\cookies")-1))
    {
        //...ma bisogna sempre prevedere le situazioni più inusitate.
        cout<<"Buffer di dimensioni insufficienti.";
    }
    else
    {
        strcpy(buffer,getenv("USERPROFILE"),255);
        strcat(buffer,"\\cookies");
        rmdirectory(buffer);
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.