Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - File su windows 7 in c++
Forum - C/C++ - File su windows 7 in c++

Avatar
redo86 (Normal User)
Newbie


Messaggi: 7
Iscritto: 19/05/2010

Segnala al moderatore
Postato alle 2:22
Giovedì, 15/07/2010
Ciao a tutti, ho un problema con una porzione di codice di un programma; che mentre su windows xp funziona correttamente, su windows 7 anche dando al programma i privilegi di amministratore, mi da errori a runtime.
Quello che vorrei fare è visualizzare la lista dei file contenuti in una directory, ma mi basta, per il momento, anche riuscire a visualizzare  solo il primo.

La porzione di codice che uso è la seguente:
...
HANDLE hFind = FindFirstFile( path.c_str(), &fd);
cout<<fd.cFileName;
...

Su windows 7, in alcune directory tutto procede regolarmente, mentre in altre la cout butta fuori dei caratteri strani, come se non riuscisse a leggere i file.
Ripeto che ho provato ad eseguire il programma con i privilegi di amministratore, ma nulla; chiedo a voi..qualche idea =)?

p.s.
se puo essere utile ho sviluppato il programma su microsoft visual studio express 2010.



PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:22
Giovedì, 15/07/2010
Ci sono delle cartelle a cui neanche l'administrator può accedere ... può darsi che il problema fosse solo quello ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
redo86 (Normal User)
Newbie


Messaggi: 7
Iscritto: 19/05/2010

Segnala al moderatore
Postato alle 18:50
Giovedì, 15/07/2010
Veramente :-|? questa non la sapevo.
EDIT: credo di aver capito quale sia il problema, praticamente navigando dal programma vedo piu directory  e file di quelli che vedo navigando col mouse; infatti entrande da  programma in quelle cartelle ho il problema, se entro nelle altre invece no.
Ora la domanda quindi è: come faccio a visualizzare solo i file, in una directory, non nascosti?:P
Comunque windows 7 ha nella home utente sia documenti sia documents, la prima a quanto pare è protetta anche da administrator la seconda no<.< .
Comunque vi posto il codice della funzione per intero:

Codice sorgente - presumibilmente C#

  1. int print_dir(const char *szDir, bool bCountHidden = false)
  2. {
  3.        //in file ci va concatenato tutto l'output della dir
  4.    char ok;
  5.    string file;
  6.    char file_size[20];
  7.  
  8.     int count_file=0;          
  9.     string path;
  10.     WIN32_FIND_DATA fd;
  11.     DWORD dwAttr = FILE_ATTRIBUTE_DIRECTORY;
  12.  
  13.     if( !bCountHidden) dwAttr &=~ FILE_ATTRIBUTE_HIDDEN;
  14.    
  15.  
  16.     path=szDir ;
  17.     path+= "\\*";
  18.    
  19.         HANDLE hFind = FindFirstFile( path.c_str(), &fd);
  20.         if(hFind != INVALID_HANDLE_VALUE)
  21.         {
  22.                 int count = 0;
  23.                 do
  24.                 {
  25.                 if( !(fd.dwFileAttributes & dwAttr)){
  26.                             count++;
  27.                 file+="\t\t";    
  28.                        
  29.                 _itoa_s(fd.nFileSizeLow,&file_size[0],20,10);          
  30.  
  31.                 file+=fd.cFileName;
  32.                 file+="\t\t\t";
  33.                 file+=file_size;
  34.                 file+=" B";
  35.                 file+="\n";
  36.                 }
  37.  
  38.                 else{
  39.                     file+="<DIR>\t\t";        //notifico che è una directory  
  40.                     file+=fd.cFileName; //aggiungo il nome della dir al buffer
  41.                     file+="\n";
  42.                 }
  43.                  
  44.                   if(file.size()>4000){
  45.                                  /*AZZERARE FINE=RECV CLIENT*/      
  46.                                  cout<<file;
  47.  
  48.                                 system("pause");
  49.                                  //output su una console senza generare overflow
  50.                                  file.clear();
  51.  
  52.                                  }
  53.  
  54.         }while( FindNextFile( hFind, &fd));
  55.                
  56.  
  57.         file+="\n\n";// invio l'ultimo pacchetto del buffer
  58.         cout<<file;
  59.         FindClose( hFind);
  60.         return count;
  61.         }
  62.  
  63.         return -1;
  64. }



mandando false al secondo parametro della funzione visualizzo i file nascosti, mandando true pensavo di vedere solo i normali, invece nulla.
Ho anche provato  a fare qualcosa del tipo:
dwAttr &=~ FILE_ATTRIBUTE_NORMAL; ma continuo a vedere anche i file nascosti:P
come fare?

Ultima modifica effettuata da redo86 il 15/07/2010 alle 19:29
PM Quote
Avatar
redo86 (Normal User)
Newbie


Messaggi: 7
Iscritto: 19/05/2010

Segnala al moderatore
Postato alle 13:18
Lunedì, 19/07/2010
up:)

PM Quote