mercoledì 7 gennaio 2026

C# list the shared folders on the PC

Nel caso che abbiamo la necessità di rilevare tutte le cartelle condivise del proprio pc, tramite linguaggio di programmazione c#, utilizzando il riferimento alla libreria "System.Management", possiamo rilevare tali informazioni.
Dopo averla aggiunta tra i riferimento, passiamo in visualizzazione codice ed in alto, sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi di tale libreria.

Di seguito si riporta il frammento di codice.

C#

using System.Management;



Dopo aver aggiunto il riferimento alla libreria, occorre scrivere il codice che tramite le classi "ManagementScope", "ObjectQuery", "ManagementObjectSearcher", "ManagementObjectCollection" e "ManagementObject" rileviamo tutte le cartelle condivise nel pc.


Si riporta il codice per elencare tutte le cartelle condivise nell'evento click di un pulsante.


C#

private void BtnListaCartelleCondivise_Click(object sender, EventArgs e)

 {

     try

     {

         //Oggetto per la gestione della macchina locale

         ManagementScope locale = new ManagementScope("\\\\.\\root\\cimv2");

         locale.Connect();

 

         //Oggetto che rileva le varie cartelle condivise

         ObjectQuery queryCartelleCondiviseDatrovare = new ObjectQuery("SELECT * FROM Win32_Share");

         ManagementObjectSearcher ricerca = new ManagementObjectSearcher(locale, queryCartelleCondiviseDatrovare);

         //Ottiene tutte le cartelle condivise

         ManagementObjectCollection cartelleTrovate = ricerca.Get();

         string cartelleCondivise = "";

         //Ciclo per i vari oggetti

         foreach (ManagementObject share in cartelleTrovate)

         {

             //Non tengo conto delle unità (per esempio C$, D$, IPC$)

             if (!share["Name"].ToString().EndsWith("$"))

             {

                 cartelleCondivise += share["Name"] + "\n";

                 cartelleCondivise += $"  Nome: {share["Name"]} " + "\n";

                 cartelleCondivise += $"  Descrizione: {share["Description"]}" + "\n";

 

             }

         }

 

         //libero la memoria

         cartelleTrovate.Dispose();

         ricerca.Dispose();

         MessageBox.Show(cartelleCondivise);

     }

     catch (ManagementException ex)

     {

         Console.WriteLine($"Si è verificato il seguente errore: {ex.Message}");

     }

     catch (System.UnauthorizedAccessException)

     {

         Console.WriteLine("Accesso negato. Avviare con il ruolo di amministratore.");

     }

 }


Nessun commento: