Non è una buona prassi: la cartella radice del disco di sistema sui sistemi NT (quindi NT, 2000, XP, 2003 Server e Vista) è protetta di default da un'ACL che consente solamente ad amministratori e Power Users di creare e modificare file, per cui i normali utenti limitati non saranno in grado di eseguire la tua applicazione.Originariamente inviato da stejano
ciao a tutti avevo una curiosità.
spesso mi capita di dover metter dei file che poi richiamo in dei punti standard del computer
ad esempio se voglio richiamare il file ciccio.bmp:
io lo piazzo in c:\ e poi lo richiamerò nel programma con c:\ciccio.bmp, se distribuirò il programma farò mettere lì quel file e andrà così su tutti i pc.
In linea di massima non bisognerebbe MAI inserire un percorso hardcoded nel codice del proprio programma, perché non è detto che tale percorso esista o che l'utente abbia i permessi per accederci. Il modo corretto per scrivere file su disco senza che l'utente dica dove devono andare è usare le variabili di ambiente per ottenere i percorsi standard; le linee guida sono queste:ci sono altri punti abbastanza standard in cui piazzare i propri file?in maniera che poi distribuendo il file, con facilità sia richiamabile??
non è possivile mettere il file nella stessa cartella del programma tipo le librerie e poi richiamarlo?se sì come?
oppure quali altre cartelle di windows posso sfruttare?
a volte mi capita anche di dover generare dei file temporanei, che poi rimangono lì però. perchè non li cancello ma li faccio sovrascrivere...con quelli come posso fare???
grazie!
- i file di configurazione per-user dell'applicazione vanno in %appdata%\nomeapplicazione (in VB.NET puoi usare anche solo Application.UserAppDataPath, che restituisce %appdata%\nomeproduttore\nomeprodotto\versioneprod otto);
- i file temporanei vanno in %tmp% (o in %temp%);
- i file di configurazione dell'applicazione modificabili solo dall'amministratore vanno messi nella cartella dell'applicazione (App.Path in VB6, Application.StartupPath in VB.NET);
- i file di configurazione comuni a tutti gli utenti e modificabili da tutti vanno in %allusersprofile%\nomeapplicazione (in VB.NET puoi usare anche solo Application.CommonAppDataPath, che restituisce %allusersprofile%\nomeproduttore\nomeprodotto\vers ioneprodotto);
- nient'altro andrebbe messo in altri posti (in verità ci sarebbe anche la distinzione tra appdata in roaming o locale, ma non stiamo a sottilizzare).
I file temporanei ovviamente dovrebbero essere cancellati quando non servono più.