Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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: 6402
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