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# / VB.NET - cercare 1 file nel pc!
Forum - C# / VB.NET - cercare 1 file nel pc!

Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 15:15
Martedì, 16/09/2008
salve a tutti! ogni giorno ho una domanda da farvi!:D il problema di oggi è sapere se esiste 1 modo in VB.net per cercare 1 file nel pc nn sapendo in ke cartella sia! tipo il cerca in windows! So ke qualcuno lo sa! Pleaseeeeee aiutatemi! grazie 1000

ho trovato questo, ma mi blocca la scansione x i permessi! cm faccio x avere questi permessi?

questo è il codice!
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.  
  3.     Private Function TrovaFileDaNome(ByVal NomeDelFileDaCercare As String) As String
  4.  
  5.         Dim Res As String = ""
  6.         Dim Dischi() As String = IO.Directory.GetLogicalDrives
  7.         Dim Cartelle() As String
  8.         For i As Integer = 0 To Dischi.Length - 1
  9.             Try
  10.                 Cartelle = IO.Directory.GetDirectories(Dischi(i))
  11.                 For j As Integer = 0 To Cartelle.Length - 1
  12.                     Res = TrovaFileNellaCartella(NomeDelFileDaCercare, Cartelle(j))
  13.  
  14.                     If Res <> "" Then Return Res
  15.                 Next
  16.             Catch ex As Exception
  17.                 MessageBox.Show(ex.Message)
  18.             End Try
  19.         Next
  20.         Return Res
  21.     End Function
  22. _________________________________________________
  23.  
  24.  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  25.  
  26.  
  27.         TrovaFileDaNome("Prova.txt")
  28.     End Sub


Ultima modifica effettuata da gianluca il 16/09/2008 alle 15:47
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:29
Martedì, 16/09/2008
Usi Vista? Dei avere i permessi di amministratore e non li puoi ottenere via codice. Potrebbe esserci l'opzione "Avvia come amministratore" nel menù contestuale.

Guarda i sorgenti di Iper Search Plus.

PM Quote
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 16:32
Martedì, 16/09/2008
a meno che tu non faccia una scansione di rete nel tuo pc dovresti avere accesso a quasi tutte le cartelle (tranne alcune di sistema), altrimenti è perchè non hai i permessi e neanche tu hai la password per entrarci; ti consiglio di saltare quelle a cui non hai accesso usando le istruzioni (per il c#) try, catch, sono quelle che non ti fanno crashare il programma in caso di errori.
comunque tu hai capito cosa fa quel codice?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:38
Martedì, 16/09/2008
Non sembra ricorsivo, anche perchè ne manca un pezzo. Se TrovaFileNellaCartella non è ricorsiva, non funzionerà.

PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 18:04
Martedì, 16/09/2008
questo è quello completo! ma non capisco cm funziona... o almeno, lo faccio iniziare ma mi dice ke non ho i permessi!

Codice sorgente - presumibilmente VB.NET

  1. Private Function TrovaFileDaNome(ByVal NomeDelFileDaCercare As String) As String
  2.         Dim Res As String = ""
  3.         Dim Dischi() As String = IO.Directory.GetLogicalDrives
  4.         Dim Cartelle() As String
  5.         For i As Integer = 0 To Dischi.Length - 1
  6.             Try
  7.                 Cartelle = IO.Directory.GetDirectories(Dischi(i))
  8.                 For j As Integer = 0 To Cartelle.Length - 1
  9.                     Res = TrovaFileNellaCartella(NomeDelFileDaCercare, Cartelle(j))
  10.                     If Res <> "" Then Return Res
  11.  
  12.                    
  13.                 Next
  14.             Catch ex As Exception
  15.                 'Return Res
  16.                 MessageBox.Show(ex.Message)
  17.             End Try
  18.         Next
  19.         Return Res
  20.         Label1.Text = Res
  21.     End Function
  22.  
  23.  
  24.     Private Function TrovaFileNellaCartella(ByVal NomeDelFileDaCercare As String, ByVal PercorsoCartella As String) As String
  25.         Dim res As String = ""
  26.         Dim Cartelle() As String
  27.         Dim FileContenuti() As IO.FileInfo = New IO.DirectoryInfo(PercorsoCartella).GetFiles()
  28.         For i As Integer = 0 To FileContenuti.Length - 1
  29.             If FileContenuti(i).Name.ToUpper = NomeDelFileDaCercare.ToUpper Then
  30.                 Return FileContenuti(i).FullName
  31.             End If
  32.         Next
  33.         Cartelle = IO.Directory.GetDirectories(PercorsoCartella)
  34.         For i As Integer = 0 To Cartelle.Length - 1
  35.             res = TrovaFileNellaCartella(NomeDelFileDaCercare, Cartelle(i))
  36.             If res <> "" Then
  37.                 Return res
  38.             End If
  39.         Next
  40.         Return res
  41.     End Function




il problema è ke io sto cercando di fare questo programma da passare alla mia classe e questo file viene salvato nei documenti! il problema è ke da me il percorso è

C:\Users\GIANLUCA\Documents

x uno ke si kiama diverso nn è cs! cm faccio a trovare la cartela documents??
un modo forse piu facile sarebbe cercare in C:\users se c'è una cartella ke contiene Documents
solo ke nn so cm iniziare! UFFFF

Cmq grazie a punkettone90 e al mitico Totem!

Ultima modifica effettuata da gianluca il 16/09/2008 alle 18:22
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:23
Martedì, 16/09/2008
Prima hai detto che non sai dove si trova il file, ora dici che è nella cartella documenti. Sei un po' indeciso? :rotfl:
Per ottenere il percorso dei documenti si usa My.Computer.FileSystem.SpecialDirectories.Documents.

Tieni conto che ci possono essere più file con lo stesso nome: quella funzione ne restituisce solo uno. Inoltre, mi sembra un po' eccessivo cercare in tutti i drivers del computer. Se non ti interessa riportare lo stato della ricerca, puoi usare queste poche righe:
Codice sorgente - presumibilmente Delphi

  1. Dim AllFiles As String() = IO.Directory.GetFiles("C:\", "*.*", IO.SearchOption.AllDirectories)
  2. For Each File As String In AllFiles
  3.   If IO.Path.GetFileName(File).ToLower = "prova.txt" Then
  4.     'Questo è uno dei file validi
  5.  End If
  6. Next


PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 19:24
Martedì, 16/09/2008
ho provato a scrivere qualcosa io ma non capisco ke ci sia di sbagliato...
ora sto solo cercando quale cartella è ke contiene documents, ma ho provato e non mi trova nulla! avete qualke consiglio o rimedio? grazie 100000 lo stesso

Codice sorgente - presumibilmente VB.NET

  1. Dim asd, Cartelle() As String
  2.  
  3.         Cartelle = IO.Directory.GetDirectories("C:\Users")
  4.         For i As Integer = 0 To Cartelle.Length - 1
  5.             If IO.Directory.Exists("C:\Users\" & Cartelle(i) & "\Documenti") Then
  6.                 asd = Cartelle(i)
  7.                 Label1.Text = asd
  8.  
  9.             End If
  10.         Next


Ultima modifica effettuata da gianluca il 16/09/2008 alle 19:26
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:26
Martedì, 16/09/2008
L'array Cartelle() contiene il percorso COMPLETO di ogni cartella.

PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 19:47
Martedì, 16/09/2008
Ops, ho capito ora quello del My.Computer.FileSystem.SpecialDirectories.MyDocuments
non pensavo esistesse quella funzione!:rotfl: scusatemi tanto, la prox lvt dico tutto subito:D
grazie 10000

Ultima modifica effettuata da gianluca il 16/09/2008 alle 20:13
PM Quote