Rilevare un percorso di rete in C# e VB.NET

Per percorso di rete UNC si intende la posizione di una cartella o file all’interno di un percorso di una rete locale, detta anche intranet.

I percorsi UNC (Universal naming convention) possono essere raggiunti dai dispositivi autorizzati e collegati nella stessa rete locale. Questi dispositivi potranno facilmente visualizzare e modificare i file all’interno di queste reti proprio come se fossero al loro interno, nella memoria locale.

Programmando applicazioni per ambienti desktop spesso si ha a che fare con percorsi di rete UNC, tutti questi programmi dovranno riuscire a identificare e leggere dei file nelle cartelle di rete, ma per fare questo dovranno essere “istruiti” dallo sviluppatore.

Questo perché, un percorso di rete non può essere trattato allo stesso modo di un percorso locale (nel computer stesso), o i software presenteranno errori o non si comporteranno nel modo corretto.

Programmando in C# o in Visual Basic .NET è possibile programmare un software in modo che rilevi quando una cartella o file è posizionato in un percorso di rete (UNC) o locale, e comportarsi di conseguenza.

Rilevare percorsi UNC con C# e VB.NET

C# e VB.NET lavorano sulla stessa logica, anche se utilizzano una sintassi differente, l’obiettivo è sempre lo stesso. Con entrambi i linguaggi di programmazione possiamo rilevare se uno specifico percorso (di tipo stringa) è UNC o locale, e questa differenziazione è molto importante da fare altrimenti i nostri software incapperanno in errori.

Differenza tra percorso UNC o locale

Un percorso UNC (UNC Path) si può riconoscere facilmente dalla sua struttura, infatti si presenta in questo modo:

  • \\192.168.10.1\Documenti\cartella\file.txt

Normalmente un percorso di rete è seguito da due barre oblique “\\” e un indirizzo IP locale.

Invece un percorso ad una cartella locale si presenta normalmente in questo modo:

  • C:\User\Documenti\cartella\file.txt

Questo è un esempio di percorso molto comune, facilmente riconoscibile ai più, poiché è spesso mostrato durante l’utilizzo di un computer, quando si fa click su una cartella qualsiasi. Un percorso di questo genere fa riferimento all’unità interna del computer (“C:” in questo caso) e ad una successione di cartelle.

Da notare ora la differenza tra questi due esempi: Un percorso UNC utilizza un indirizzo IP di riferimento e non una lettera di unità, inoltre inizia con due barre oblique “\\”, identificando un indirizzo esterno al dispositivo.

Tutto questo significa che non basta identificare una path UNC, ma bisogna fare in modo che il nostro programma la converta in un percorso locale, altrimenti verrà considerata come un comune URL.

Il codice

Per fare in modo che un software sviluppato in VB.NET o C# rilevi una stringa come un percorso di rete, basterà eseguire uno specifico comando isUnc.

Questa proprietà restituisce un valore booleano (true/false) se l’URI specificato è un percorso UNC, ad esempio “\\hostname\cartella\…” oppure “//nomeserver” o un file di rete (un percorso che inizia con “file://…“).

La proprietà isUnc può essere usata esclusivamente con variabili di tipo “Uri“, come vedremo nei codici seguenti.

VB.NET

        Dim percorsoUNC As New Uri("\\192.168.10.1\folder\")
        If percorsoUNC.IsUnc = True Then
            'è un percorso Unc'
        Else
            'non è un percorso Unc'
        End If

Nel caso in cui la condizione restituisca True, possiamo pensare di trasformare questo URL in un percorso locale (se necessario per i nostri scopi).

Per fare questo basta aggiungere una riga di codice in più:

    Dim mioPercorso As String = "\\192.168.10.1\folder\"
    Dim percorsoUNC As New Uri(mioPercorso)
        If percorsoUNC.IsUnc = True Then
              mioPercorso = "//" & percorsoUNC .Host & percorsoUNC .PathAndQuery
        Else
            'non è un percorso Unc'
        End If

C#

Questo è un codice alternativo al precedente, scritto in CSharp, per ottenere lo stesso identico risultato del precedente.

            Uri percorsoUNC = new Uri("\\192.168.10.1\folder\");
            if (percorsoUNC.IsUnc)
            {
                //è un percorso UNC

            }
            else
            {
                //non è un percorso UNC
            }

Programmi in VB.NET? Può interessarti come generare numeri casuali in VB.NET?

Iscriviti alla nostra Newsletter qui e seguici su Facebook per aggiornamenti!


Articoli recenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

CAPTCHA