Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
10/03/08 16:40
Dark_Limit
Ciao a tutti!
Sto cercando di fare una ricerca in tutto l'HD tramite questo codice :


For Each foundfile1 As String In my.Computer.FileSystem.GetFiles ( _
			"C:", _
			microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubdirectorys    , _
			"*.exe")
			listbox1.Items .Add (foundfile1)
		Next



Solo che mi da un errore di accesso ai file negato..dite che è meglio usare le api?:-?

Grazie!!
aaa
10/03/08 18:27
gantonio
Se cerchi in tutto il disco, arriverai anche in alcune cartelle in cui non hai il permesso per accedere e quindi avrai l'errore (ovviamente, anche con le API ...).

Quello che devi fare e' prevedere l'errore (con un costrutto Try .. Catch ... End Try) e ignorarlo
aaa
11/03/08 12:55
Il Totem
Fai come dice gantonio: usa un try. Ad ogni modo, quando è possibile disporre di wrapper già pronti del framework viene generalmente sconsigliato di fare appello all'API di windows.
aaa
11/03/08 17:17
Dark_Limit
Grazie delle risposte!

Mi potete gentilmente postare un pezzetto di codice con try e catch che non appena gestisca l'errore si "unhautorized access" continua a cercare dal file successivo?
Grazie!:k:
aaa
17/03/08 7:33
Il Totem
Siccome l'eccezione viene genrata all'interno del metodo, l'unico modo per non farlo bloccare è scrivere un'altra funzione ricorsiva, Ma dato che questa dovrebbe comunque usare GetFiles, genererebbe lo stesso errore e solo una parte di files in una cartella verrebbe registrata. In conclusione, quindi, avresti comunque delle mancanze di file nella lista finale, di tutti quei file che seguono quelli con accesso limitato.
Function GetExeFiles(Dir As String) As List(Of String)
  DIm Result As New List(Of String)

  Try
    For Each File As String In IO.Directories.GetFiles(Dir, "*.exe")
      Result.Add(File)
    Next
  Catch Ex As Exception
  End Try

  For Each SubDir As String In IO.Directory.GetDirectories(Dir)
    Result.AddRange(GetExeFiles(SubDir))
  Next

  Return Result
End Function
aaa
17/03/08 16:51
Dark_Limit
Ciao Totem scusa se rompo..ho provato a compilare quel codice ma mi da diversi errori..:-|
aaa
18/03/08 14:58
Il Totem
Sì, l'ho scritto senza compilatore, ho sbagliato qualche lettera (ad esempio IO.Directories invece di IO.Directory) e manca un ByVal. Ci vorrà poco a correggerlo.
E comunque sì, rompi, perchè non so quante volte ho detto che "dà errore" è una frase che non voglio assolutamente sentire. Voglio sapere quale errore, dove e perchè, e la descrizione.
Ultima modifica effettuata da Il Totem 18/03/08 14:59
aaa
18/03/08 16:43
Dark_Limit
Beh io intendevo usarlo all'interno dell'evento di un bottone e l'errore che mi da "nn è possibile utilizzare function etc all'interno di un metodo" cmq sono un rompi e grazie per avermi aggredito e aiutato sono un rompi e per questo la prossima volta che sentirò dirmi cose simili nn chiederò neanche più sul forum(visto che vi divertite a nn so forse a prendere in giro la gente..boh devo ancora capirvi/ti)...ma sul forum nn si chiede...?? mah saranno cambiati i tempi e la mentalità...ogni cosa cambia..."RAGAZZI MI RACCOMANDO NN CHIEDETE PIU' SUI FORUM ,ROMPETE"<--Questa frase mi sa che la dovrete sentire per molto visto che dal post precedente sembra che sui forum nn si debba più scrivere...vabbè tornando al dunque se mi volete aiutare bene senò vado su altri forum no problem..:k:
aaa