Mi sta venendo un’allergia a Vista! Siccome non ho trovato praticamente niente su questo argomento, vi scrivo le conclusioni alle quali sono arrivato.
In Windows Vista ha introdotto un sistema di sicurezza denominato UAC (User Account Control). Questa funzione per l’utente finale si concretizza in una serie di richieste di autorizzazione per l’esecuzione di programmi o modifiche di configurazione.
Il sistema UAC non permette ad un utente qualsiasi di accedere a funzionalità o cartelle ritenute critiche o di sistema. Ad esempio, UAC non permette di scrivere nella cartella di sistema di Windows o nella cartella Program Files dove vengono installati tutti i software.
Per noi poveri programmatori si traduce in un calvario. Infatti se la nostra applicazione deve scrivere qualcosa nella directory del programma, questa non verrà scritta. O meglio non verrà scritta nella cartella del programma ma nella cartella
C:\Users\username\AppData\Local\VirtualStore\Program Files\appname
Io sono stato diversi giorni per capirlo. Ovviamente la tua applicazione se punta direttamente ai file presenti in questa cartella non funzionerà poiché non verrà trovata dal programma. Al programma è necessario continuare a passare il path nella directory corrente e poi è Vista che si occupa di gestire il resto.
Da questo ricavo l’insegnamento che la cosa migliore sarebbe di non creare mai i file nella directory del programma ma in una delle cartelle appositamente messe a disposizione da Windows (buona norma non solo in Vista).
Ciao Ciao!