Condividi:        

C# Percorso file e memorizzazione cartella

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

C# Percorso file e memorizzazione cartella

Postdi pacifico » 29/08/25 09:06

Buongiorno,

ad un programma gradirei memorizzare due cartelle in: C:\Program Files o in Programmi(x86).

Le cartelle non vengono memorizzate nelle rispettive cartelle bensì al di fuori sempre in C.
Trascrivo il codice:
Codice: Seleziona tutto
if (System.IO.Directory.Exists(@"C:\Programmi(x86)\Prova") == false)
{
    MessageBox.Show("Cartella non esiste");
    Create();
}

private void Create()
{
    //System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova");

    System.IO.Directory.CreateDirectory(@"C:\Programmi (x86)\Prova");
   
    System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova\CartellaUno");
    System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova\CattellaDue");
}


Auguro che possiate suggerire dove sbaglio e fiducioso di un gradito riscontro, saluro.
Domenico
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Sponsor
 

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 29/08/25 16:52

Provato a lanciare il programma usando il tasto destro e la voce "Esegui come Amministratore" ?
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 29/08/25 18:37

Gent.mo Dylan66,

ringrazio della disponibilità e mi scuso del ritardo.

Ogni programma viene lanciato come amministratore.

Il problema che riscontro che la cartella viene salvata in C al di fuori di Program File o Programmi(x86) e non all'interno.

Domenico.
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 29/08/25 18:43

Fai la prova che ti ho suggerito per favore e dimmi se il risultato è lo stesso
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 29/08/25 20:27

Gent.mo Dylan66,

si il risultato è lo stesso.

Buona serata

Domenico.
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 30/08/25 19:53

E se come percorso utilizzi C:\test\Prova invece di C:\Programmi (x86)\Prova funziona?
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 31/08/25 17:11

Gent.mo Dylan66,

come ho accennato all'inizio, il percorso per salvare la cartella e le sottocartelle con file vengono salvate regolarmente in C:,
in roaming ed altro. Non vengono salvate solo alle due cartelle Program File e a Programmi(x86).
Posso pensare che sono programmi protetti ed ho notato che alla Proprietà è spuntato:
'Solo lettura, si applica solo a file della cartella)'.
Ho provato ad eliminare la spunta senza risultato viene inserita automaticamente.
Ringrazio della gentilezza e disponibilità.
Domenico
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 31/08/25 18:50

Le cartelle che citi sono cartelle con permessi speciali (che non andrebbero toccati) e se ne apri una e premi il tasto destro vedrai che il menù "Nuovo" ha due particolarità

1) puoi creare solo cartelle e non file
2) "Cartella" ha vicino il simbolo di uno scudo.

Se scegli comunque la voce "Cartella" ti apparirà una finestra di conferma per eseguire l'operazione come amministratore.
Questo almeno su Windows 10 o 11 ma immagino pure su un 8 o 7.
Allo stesso modo se non esegui il tuo EXE come amministratore non dovresti riuscire a fare nulla e non dovrebbe creare la cartella da nessuna parte, restituendoti invece questo errore: System.UnauthorizedAccessException: 'Accesso al percorso 'C:\Program Files (x86)\Prova' negato.'

Fra le altre cose il primo dei 3 percorsi non andrebbe indicato come "Programmi (x86)" ma come "Program Files (x86)" altrimenti si crea un altro problema.
A questo punto ti lascio il codice completo che sto provando io, in un progetto nuovo, ma tu dimmi di preciso che sistema operativo usi e magari pure che versione di .NET

Codice: Seleziona tutto
using System;
using System.Windows.Forms;

namespace Test_PCF
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            if (System.IO.Directory.Exists(@"C:\Programmi(x86)\Prova") == false)
            {
                MessageBox.Show("Cartella non esiste");
                Create();
            }

        }

        private void Create()
        {
            //System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova");

            System.IO.Directory.CreateDirectory(@"C:\Program Files (x86)\Prova");
            System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova\CartellaUno");
            System.IO.Directory.CreateDirectory(@"C:\Program Files\Prova\CattellaDue");
        }
    }
}


Sottolineo che non sono un programmatore, quindi se passa qualcuno che se ne intende è benvenuto
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 01/09/25 08:24

Gent.mo Dylan66,

il S.O. che uso è Win 10 64bit e Net Framework 4.8.
se uso il codice che hai fornito:
System.IO.Directory.CreateDirectory(@"C:\Program Files (x86)\Prova");

accesso al percorso: negato
il motivo che vi è lo spazio tra Files e (x86).

viceversa eliminando lo spazio, crea una cartella in C: al di fuori di Program Files(x86) e non all'interno.

Auguro una buona giornata, saluto.
Domenico.
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 01/09/25 11:33

ciao, ecco, ora ho capito:

1) il problema non è lo spazio ma il fatto che non esegui il programma come amministratore
2) se levi lo spazio punti una cartella completamente diversa

Ribadisco: compila il progetto (F5) poi fermalo e spostati nella cartella <nome_progetto>\bin\Debug dove si trova il file EXE appena creato.
Su quel file premi il tasto destro, scegli "Esegui come Amministratore" e ti assicuro che risolverai il problema al 100%
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 01/09/25 15:37

Gent.mo Dylan66,

siamo al capolinea funziona.

Visto che funziona in "Bin/Debug" con il programma .exe e esegui come amministratore, e va bene.
Proverò a compilare il programma rendendolo esecutivo con InnoSetup. Auguro bene.

Non ho parola come ringraziare e buon proseguimento.

Domenico.
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 01/09/25 21:54

Con InnoSetup non credo che risolverai il problema che questo EXE debba essere comunque avviato come amministratore...
La cosa più logica da fare è fare in modo che l'applicazione "chieda" i diritti amministrativi quando la si avvia, senza che l'utente sappia di dover usare una voce specifica del tasto destro.
Per farlo la procedura è questa: in Visual Studio a destra dovresti avere l'elenco completo (fatto ad albero) dei file che compongono la tua soluzione, che nel mio esempio si chiama "Test PCF"
La prima voce in alto dovrebbe essere "Soluzione: Test PCF" con una icona viola (quella del Visual Studio).
La voce subito sotto dovrebbe essere "Test PCF" con vicino il simbolo C# che è il linguaggio che stai usando.
Su questa seconda voce premi il tasto destro e vai su "Aggiungi > Nuovo elemento..." (oppure premi CTRL+SHIFT+A)
1Immagine.png


Nella finestra che appare cerca "File Manifesto" o aiutati con il "Cerca" alto a destra.
2Immagine.png


Una volta cliccato ti si aprirà un nuovo file che altro non è che un XML.
Devi solo trovare la scritta level="asInvoker" e sostituirla con level="requireAdministrator"
3Immagine.png


A questo punto compili il progetto premendo "Avvia" (o F5) e il Visual Studio ti chiederà di essere riavviato "con credenziali diverse" ma il realtà si ri-avvierà chiedendoti i diritti di amministratore.
4Immagine.png


Digli di "Sì" e avrai 2 vantaggi:

  1. Adesso quando premi "Avvia" (o F5) per compilare l'applicazione tutto funzionerà senza dove avviare a mano l'app dalla cartella "Debug" col tasto destro, perché Visual Studio lo farà per te ogni volta

  2. Se vai nella cartella Debug (o Release) vedrai che l'EXE adesso ha l'icona dello scudo. Questo vuol dire che quando lo avvi è lui a chiederti subito i diritti di amministratore, cosa che dovrebbe avvenire anche quando eseguito da InnoSetup

Lo stesso procedimento è visibile anche qui:
https://youtu.be/JquOqGkPg3I?si=v3iOYSeMJ6y0Y_v0&t=136

Fammi sapere se così va meglio, oppure spiegami più dettagliatamente il quadro generale per poterti aiutare.
Ribadisco ancora una volta che sono un autodidatta nel campo, quindi se passa chi ne sa di più smetti di darmi retta e segui lui :D
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46

Re: C# Percorso file e memorizzazione cartella

Postdi pacifico » 02/09/25 17:06

Gent.mo Dylan66,

ringrazio della gentilezza e disponibilità.

Funziona perfettamente e mi scuso del ritardo dovute alle varie prove.

Sono autodidatta e realizzo dei programmi a livello familiare e grazie a Voi per i consigli, suggerimenti porto a termine.

Purtroppo sono negato all'inglese ed aiuto con il traduttore, vedo molti tutorial e spero di trovare se esiste un traduttore vocale.

Buon proseguimento e GRAZIE.
Domenico.
pacifico
Utente Senior
 
Post: 223
Iscritto il: 05/10/06 16:20

Re: C# Percorso file e memorizzazione cartella

Postdi Dylan666 » 02/09/25 18:05

Per la traduzione in tempo reale dei sottotitoli (se il video li ha) puoi provare questo:
https://smodin.io/it/tradotto-sottotito ... vero-tempo
Avatar utente
Dylan666
Moderatore
 
Post: 40326
Iscritto il: 18/11/03 16:46


Torna a Programmazione


Topic correlati a "C# Percorso file e memorizzazione cartella":

File immagine disco
Autore: MarioLombardi
Forum: Software Linux
Risposte: 3

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti