sabato 26 aprile 2025

C# elencare la cartelle condivise nel proprio pc

Il frammento di codice nel linguaggio di programmazione C# qui di seguito, illustra una tecnica per elencare tutte le cartelle condivise nel proprio pc.
Esempio di codice utilizzato in un progetto di tipo Windows Application.

Aggiungere nei riferimenti la libreria "system.Management" che permette di gestire alcune informazioni del sistema operativo Windows.

Dopo aver aggiunto tale riferimento, in alto, nella dichiarazione dello spazio dei nomi, dobbiamo aggiungere il riferimento a tale libreria. Di seguito si riporta il frammento di codice delle suddette operazioni .

C#

using System.Management;



In un evento click di un pulsante, oppure in una funzione o altro evento, dobbiamo scrivere il codice, che tramite l'uso delle classi "ManagementScope" "ObjectQueryManagementObjectSearcher"  e "ManagementObject" rileviamo le cartelle condivise nel pc, eseguendo una query con la classe "ObjectQuery

Di seguito si riporta il frammento di codice delle suddette operazioni. 

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: