Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-04-2009, 14:33   #1
nardellu
Senior Member
 
L'Avatar di nardellu
 
Iscritto dal: Apr 2005
Città: SARDEGNA
Messaggi: 1861
[VB .NET] DirectoryInfo.GetDirectories(), problema accesso negato

vi posto una parte di codice di un programma che stò realizzando:

Codice:
dim path_primaria as string = "C:\users\utente\Documents"

      Dim rootInfo As DirectoryInfo = New DirectoryInfo(path_primaria)  
        Try
            For Each d As DirectoryInfo In rootInfo.GetDirectories("*.*", SearchOption.AllDirectories)
                'se non sono cartelle nascoste o di sistema le inserisce nell'array
                If (d.Attributes And IO.FileAttributes.Hidden) <> FileAttributes.Hidden Then
                    array_cartelle.Insert(a, d.FullName)
                End If
                a += 1
            Next

        Catch ex As UnauthorizedAccessException
'codice di gestione errore

        Catch ex As Exception
'codice di gestione errore

        End Try
si verifica il problema dell'accesso negato... cioè durante la chiamata rootInfo.GetDirectories("*.*", SearchOption.AllDirectories), se non si hanno le autorizzazioni si blocca...

ho provveduto con i catch a gestire il problema, ma il mio vero problema e che appena trova una cartella alla quale non può accedere, non continua il loop...

esempio su vista, nella cartella documents ci sono delle cartelle symboliche (video, musica, immagini ecc...) e mi si blocca li...

si può risolvere in qualche maniera? stò diventando scemo , e su google mi stò rincoglioxxxxx

any idea?
si potrebbe ovviare, oppure è un discorso morto?
__________________
Trattative OK non le conto più...Trattative non OK: Slashdot giuscone Kururu Paki deCri
nardellu è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 15:04   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nardellu Guarda i messaggi
ho provveduto con i catch a gestire il problema, ma il mio vero problema e che appena trova una cartella alla quale non può accedere, non continua il loop...
Per forza, hai messo tutto il For Each nel blocco Try Catch. Prova mettendo solo l'istruzione che può sollevare l'eccezione.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 15:39   #3
nardellu
Senior Member
 
L'Avatar di nardellu
 
Iscritto dal: Apr 2005
Città: SARDEGNA
Messaggi: 1861
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Per forza, hai messo tutto il For Each nel blocco Try Catch. Prova mettendo solo l'istruzione che può sollevare l'eccezione.
scusami forse non mi sono spiegato bene...

l'errore di accesso negato, mi viene fuori durante l'inizio del ciclo...

anche se includo "try/catch" qui:
Codice:
'se non sono cartelle nascoste o di sistema le inserisce nell'array
                If (d.Attributes And IO.FileAttributes.Hidden) <> FileAttributes.Hidden Then
                    array_cartelle.Insert(a, d.FullName)
                End If
ottengo sempre l'errore perché è a monte di tale operazione...

mi servirebbe una soluzione che prosegua il ciclo anche quando il metodo rootInfo.GetDirectories("*.*", SearchOption.AllDirectories) restituisce un eccezione, in questo caso accesso negato alla cartella xxxxxx...
__________________
Trattative OK non le conto più...Trattative non OK: Slashdot giuscone Kururu Paki deCri
nardellu è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 15:56   #4
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
Lo sai che anch'io sto avendo eccezioni di Accesso negato quando provo a cancellare o rinominare directory?

Ecco il mio codice:

Codice:
if (Directory.Exists(this.ProfilePath[i, 1]))
{
	try
	{
		Directory.Move(this.ProfilePath[i, 1], this.ProfilePath[i, 1] + "OLD");
	}
	catch (Exception Error)
	{
		MessageBox.Show(this.NameOfProgram + "TryToRenameFolder *** \n" + Error.Message);	
	}
}
dove ProfilePath è un array che contiene il percorso di una cartella all'interno di C:\Users\blablabla\AppData\Roaming\

Ho il sospetto che sia Windows Search a bloccare a volte l'accesso alla cartella.

Infatti, reiterando i tentativi di accesso, l'operazione viene conclusa con successo. Alla fine, io ho risolto così (anche se non mi piace come metodo):

Codice:
TryToRenameFolder:
if (Directory.Exists(this.ProfilePath[i, 1]))
{
	try
	{
		Directory.Move(this.ProfilePath[i, 1], this.ProfilePath[i, 1] + "OLD");
		Thread.Sleep(200);
	}
	catch (Exception Error)
	{
		#if DEBUG
		MessageBox.Show(this.NameOfProgram + "TryToRenameFolder *** \n" + Error.Message);
		#endif
		TryToRenameFolderCounter = TryToRenameFolderCounter + 1;
		if (TryToRenameFolderCounter < 5)
		{
			goto TryToRenameFolder;
		}
		else MessageBox.Show("Sorry, there was an error. \n" + Error.Message);
	}
}
Su internet leggevo della possibilità di utilizzare l'istruzione CopyFileA delle API Win32, naturalmente in codice non gestito, in quanto dovrebbe essere in grado di accedere anche a file/cartelle bloccate da un altro processo. E' così?

Chiedo scusa all'autore del thread, ma credo che alla fine il problema sia praticamente lo stesso...

P.S: questo problema si verifica anche quando provo la mia applicazione in modalità Amministratore (uso Vista)
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)

Ultima modifica di alex783 : 21-04-2009 alle 15:59.
alex783 è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 16:03   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nardellu Guarda i messaggi
scusami forse non mi sono spiegato bene...

l'errore di accesso negato, mi viene fuori durante l'inizio del ciclo...

anche se includo "try/catch" qui:
Codice:
'se non sono cartelle nascoste o di sistema le inserisce nell'array
                If (d.Attributes And IO.FileAttributes.Hidden) <> FileAttributes.Hidden Then
                    array_cartelle.Insert(a, d.FullName)
                End If
ottengo sempre l'errore perché è a monte di tale operazione...

mi servirebbe una soluzione che prosegua il ciclo anche quando il metodo rootInfo.GetDirectories("*.*", SearchOption.AllDirectories) restituisce un eccezione, in questo caso accesso negato alla cartella xxxxxx...
Secondo me non ne esci così. Devi crearti una funzione ricorsiva, che non usa SearchOption.AllDirectories, ma SearchOption.TopDirectoryOnly e ad ogni passaggio intercettare l'errore con Try Catch. Per il momento la vedo l'unica soluzione, ma mi riservo di provare più tardi...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 16:09   #6
nardellu
Senior Member
 
L'Avatar di nardellu
 
Iscritto dal: Apr 2005
Città: SARDEGNA
Messaggi: 1861
alex783, ho visto ciò che hai fatto, ed anche io ho già provato la tua soluzione senza risoluzione...

ma io ho anche individuato il problema esatto, che ne mio caso è la presenza di cartelle simboliche (collegamenti a cartelle) nella cartella documents in c:\users\nomeutente\

ad esempio dentro documents, c'è la cartella Video, che come icona su explorer ha il simbolo del collegamento e quando la Getdirectories() ci passa sopra ottengo il famoso messaggio "accesso negato...",

infatti mi servirebbe un qualcosa che ignori tale errore e prosegua con le altre cartelle... ma a stò punto dubito che esista dati gli innumerevoli 3ds senza risoluzione che ho letto su google...

potrebbe anche andar bene un metodo ricorsivo per ottenere in un altra maniera cartelle e sottocartelle, e ficcarle dentro un array...
__________________
Trattative OK non le conto più...Trattative non OK: Slashdot giuscone Kururu Paki deCri
nardellu è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 18:13   #7
nardellu
Senior Member
 
L'Avatar di nardellu
 
Iscritto dal: Apr 2005
Città: SARDEGNA
Messaggi: 1861
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Secondo me non ne esci così. Devi crearti una funzione ricorsiva, che non usa SearchOption.AllDirectories, ma SearchOption.TopDirectoryOnly e ad ogni passaggio intercettare l'errore con Try Catch. Per il momento la vedo l'unica soluzione, ma mi riservo di provare più tardi...
be ho risolto alla fine...

popolare l'array, e quando c'è l'eccezione rimuovere il valore...

Codice:
'ciclo cartelle principali della cartella principale
        For Each d As DirectoryInfo In rootInfo.GetDirectories("*", SearchOption.TopDirectoryOnly)

            array_cartelle.Add(d.FullName)
            Dim rootInfo2 As DirectoryInfo = New DirectoryInfo(d.FullName)

            'scarta le cartelle di sistema e nascoste
            If d.Attributes <> FileAttributes.Hidden And FileAttributes.System Then
                'prova a ottenere tutte le sottocartelle
                Try
                    For Each d2 As DirectoryInfo In rootInfo2.GetDirectories("*", SearchOption.AllDirectories)
                        array_cartelle.Add(d2.FullName)
                    Next

                Catch ex As UnauthorizedAccessException
                    'se una directory provoca l'eccezzione di autorizzazioni rimuove dall'elenco cartelle
                    Dim remove_value = array_cartelle.Count - 1
                    MsgBox(Err.Description & " |" & remove_value)
                    array_cartelle.RemoveAt(remove_value

                End Try
                'fine if cartelle sistema/nascoste
            End If
            'fine ciclo cartelle principali
        Next
forse si può fare ancora meglio, ma funge alla grande e non sgarra 1 directory... che sia utile a qualcuno...
__________________
Trattative OK non le conto più...Trattative non OK: Slashdot giuscone Kururu Paki deCri

Ultima modifica di nardellu : 21-04-2009 alle 18:25.
nardellu è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 18:44   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Io invece l'ho fatta ricorsiva. La directory viene aggiunta all'ArrayList solo se non produce alcun errore d'accesso. Se una dir genera un'eccezione, mi ritrovo la descrizione completa di percorso dir in una ListBox... :

> ArrayList e Sub Ricorsiva :

Codice:
    Private arrayDirOk As ArrayList

    Private Sub TrovaCartelle(ByVal cartellaTop As String)

        Dim rootInfo As DirectoryInfo = New DirectoryInfo(cartellaTop)
        Try
            For Each D As DirectoryInfo In rootInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly)
                'If ... Condizioni ... 
                arrayDirOk.Add(D.FullName)
                'Rendo la Sub Ricorsiva
                TrovaCartelle(D.FullName)
            Next

        Catch ex As Exception
            lst_errori.Items.Add(ex.ToString())
        End Try

    End Sub
> Codice utilizzatore ( Button, ecc... ) :

Codice:
        lst_errori.Items.Clear()

        Dim cartellaTop As String = "C:\"
        arrayDirOk = New ArrayList
        TrovaCartelle(cartellaTop)
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 19:22   #9
nardellu
Senior Member
 
L'Avatar di nardellu
 
Iscritto dal: Apr 2005
Città: SARDEGNA
Messaggi: 1861
ottimo esempio, meno codice e meno risorse utilizzate...


utilizzerò il tuo esempio grazie...
__________________
Trattative OK non le conto più...Trattative non OK: Slashdot giuscone Kururu Paki deCri
nardellu è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2022, 18:31   #10
Giovanni G
Member
 
Iscritto dal: Jun 2018
Messaggi: 33
Una ottima soluzione (in inglese) si trova qui: https://firebird-vbnet.blogspot.com/...der-stops.html
Giovanni G è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2022, 14:50   #11
Giovanni G
Member
 
Iscritto dal: Jun 2018
Messaggi: 33
Quote:
Originariamente inviato da Giovanni G Guarda i messaggi
Una ottima soluzione (in inglese) si trova qui: https://firebird-vbnet.blogspot.com/...der-stops.html
Vedo che quel link non funziona più. Questo funziona:

https://firebird-vbnet.blogspot.com/...em-solved.html
Giovanni G è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v