Domanda

Sto cercando di scrivere un programma di installazione (creando un .vdproj) che funzionerà su Windows Vista e XP. L'unica cosa che trovo è che quando provo a eseguirlo su Vista, i file che includo nel programma di installazione vengono installati con autorizzazioni di sola lettura per i gruppi di utenti. Questo è un problema perché l'applicazione deve leggere / scrivere da questi file. L'unico modo in cui sono stato in grado di farlo funzionare è "eseguire come amministratore" o effettivamente modificare le autorizzazioni. Qualcuno sa come rendere questi file aperti a chiunque per scrivere? Grazie.

È stato utile?

Soluzione

La cartella Programmi e i suoi contenuti sono letti solo per utenti standard. Questo è di progettazione e scoprirai che questo è il caso anche su Windows XP. È proprio questo su Windows XP, così tante persone corrono con i diritti di amministratore per tutto il tempo che potresti scappare con esso. Se mai vuoi distribuire la tua app in un ambiente aziendale, scoprirai presto che non funzionerà nemmeno su XP lì.

La soluzione NON è quella di posizionare i file nella cartella eseguibile del programma se gli utenti standard avranno bisogno dell'accesso in scrittura. Inseriscili invece nella cartella Dati applicazioni. Per la maggior parte delle macchine xp, sarà qui:
C: \ Documents And Settings \ Tutti gli utenti \ Dati applicazioni \ La tua app

Tuttavia, non sarà sempre così ed è un po 'diverso su Vista, quindi assicurati di ottenere quel percorso tramite il meccanismo fornito dal tuo ambiente di programmazione. In .Net, puoi utilizzare la funzione Environment.GetFolderPath () .

Altri suggerimenti

Per aggiungere alcuni dettagli alla risposta di Joel:

  • In Win2K e XP, CSIDL_APPDATA dovrebbe essere usato per per utente, roaming . In Vista, questo è FOLDERID_RoamingAppData.

  • In Win2K e XP, CSIDL_LOCAL_APPDATA dovrebbe essere usato per per utente, non in roaming . In Vista, questo è FOLDERID_LocalAppData.

  • In Win2K e XP, CSIDL_COMMON_APPDATA dovrebbe essere usato per per macchina , vale a dire tutti gli utenti di un'applicazione. In Vista, questo è FOLDERID_ProgramData.

NB Quest'ultima cartella è normalmente di sola lettura per utenti non amministratori non amministratori. La soluzione consigliata è quella di creare una sottocartella di lettura / scrittura durante l'installazione dell'app.

MODIFICA: per ottenere le posizioni effettive di queste costanti su una macchina specifica usando il codice gestito, prova System.Environment.GetFolderPath con le costanti definite qui . Un altro collegamento utile è qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top