Domanda

Ho testato la mia applicazione per vedere come funziona quando è eseguita da un utente non amministrativo e ho riscontrato problemi con la gestione dei file. Ricevo una UnauthorizedAccessException quando provo a sovrascrivere un file, se il file è stato creato da un utente amministratore.

Quando scrivo il file, prima creo il file come file .tmp, quindi uso File.Copy per sovrascrivere l'originale. Viene creato il file .tmp, ma File.Copy non riesce. I miei file sono scritti in una directory pubblica (" C: \ Documents and Settings \ All Users \ Dati applicazioni " in XP).

Cosa posso fare in modo che tutti gli utenti possano avere il pieno controllo dei file dell'applicazione?

Ho trovato questo:

        System.Security.AccessControl.DirectorySecurity sec =  
                                System.IO.Directory.GetAccessControl ( directory );  
        FileSystemAccessRule accRule = new FileSystemAccessRule ( Globals.userIdentity,  
             FileSystemRights.FullControl, AccessControlType.Allow );  
        sec.AddAccessRule ( accRule );  

Fare quanto sopra nella directory in cui si trovano tutti i file risolverà questo problema? O dovrò fare qualcosa per ogni file? In caso affermativo, che cos'è quel qualcosa?

Modifica:

Gli utenti non amministratori non possono modificare i file creati da un utente amministratore. Questo non è buono. Ho bisogno che tutti i file siano modificabili da tutti gli utenti. Non esiste una sorta di autorizzazione che può essere impostata al momento della creazione del file che garantirà questo?

È stato utile?

Soluzione

Ho appena controllato le autorizzazioni nella directory Tutti gli utenti \ Dati applicazioni. Gli " Utenti " e " Power Users " Gli ACL non hanno " Elimina sottocartelle e file " l'autorizzazione.

Possono eliminare i propri file perché " CREATOR OWNER " ACL ha il controllo completo.

Per quanto riguarda come aggirare questo problema, potresti dare a tutti tutti gli accessi, ma un'idea migliore sarebbe quella di concedere gli " Utenti " & Amp; "Utenti esperti" ACLs " Elimina sottocartelle e file " autorizzazione sulla directory dei dati dell'app.

In alternativa, puoi assegnare " Elimina " e " Modifica " autorizzazioni sul file stesso per " Utenti " e " Power Users " quando viene creato.

Altri suggerimenti

Questo codice darebbe all'utente pieno diritto di accesso alla cartella, tuttavia, ciò potrebbe non riuscire nuovamente sulla sicurezza.

Il modo migliore per assicurarsi che l'applicazione possa sempre archiviare informazioni è tramite IsolatedStorage. Tuttavia, se hai bisogno di accedere ai tuoi file al di fuori della tua applicazione, questa non è la soluzione migliore.

Che ne dici se usi un codice simile per dare a tutti l'accesso completo al file dopo che è stato creato? Se ti capisco correttamente, i file verranno sempre creati con la tua applicazione, giusto? Quindi l'utente che crea il file in primo luogo avrà anche i diritti per regolare le impostazioni di sicurezza per il file. Quindi si tratta solo di impostare i diritti pubblici sul file una volta creato e tutti gli utenti saranno in grado di sostituire il file in seguito.

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