2009-09-20 29 views
12

Ho salvato un piccolo file di dati XML su un'unità esterna, nessun problema. Ma poi ho provato ad usare la cartella ApplicationData e altri, anche C: \ ma senza fortuna. Ricevo un errore come "Accesso al percorso" C: \ "negato"."Accesso al percorso ... negato" (.NET C#)

Giusto per confermare, il file viene creato e letto correttamente con il codice corrente, su un'unità esterna. Immagino che questo sia qualcosa a che fare con le autorizzazioni di sicurezza & ma non ho trovato nulla di troppo utile.

Grazie in anticipo se puoi indicarmi la direzione giusta su questo!

 string fipData = @"F:\IL2\SIIYM\SIIYM Data.xml"; // external drive ok :-) 
     //string fipData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     //string fipData = @"C:\"; 

     // if the XML data file doesn't exist, create it 
     bool dataFileExists = File.Exists(fipData); 
     if (dataFileExists) 
     { 
      // read the XML values 
      XDocument xData = XDocument.Load(fipData); 
      //... 
     } 
     else 
     { 
      // create & save the XML data file 
      XElement xLastPath = new XElement(el_lastPath, ""); 
      XElement xLastCode = new XElement(el_lastCode, ""); 

      XElement xRoot = new XElement(el_root); 
      xRoot.Add(xLastPath); 
      xRoot.Add(xLastCode); 

      XDocument newDataFile = new XDocument(); 
      newDataFile.Add(xRoot); 

      try 
      { 
       newDataFile.Save(fipData); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Data file unable to be created. System message:{0}".Put(Environment.NewLine + Environment.NewLine + ex.Message)); 
      } 
     } 
+0

Umm ... Non so perché ma al risveglio stamattina, funziona per ApplicationData. Sarebbe bello sapere perché. Ho avuto qualche problema durante il passaggio da debug a release build. Posso solo supporre che fosse collegato a quello. Grazie a tutti per i vostri pensieri! – MrGreggles

+0

Le dichiarazioni "fipData" commentate nel codice di esempio in realtà non specificano un nome file: solo percorsi. È un errore di battitura? –

+0

Blush Matt, potrebbe essere stata la causa. Lunga giornata, zapping cerebrale. Grazie ragazzi per le vostre idee! – MrGreggles

risposta

2

posso solo immaginare che l'applicazione deve essere in esecuzione nel contesto di un utente che non ha accesso all'unità locale, ad esempio un sito Web ASP.NET in esecuzione con l'account IIS anonimo o un account di servizio che ha accesso solo ai percorsi di rete pertinenti.

+0

Oops, il contesto è: * Il mio PC personale * Windows 7 * App desktop È solo che le mie impostazioni UAC (impostazione predefinita) sono forse troppo alte? Come posso sapere se funzionerà sul computer di un'altra persona? – MrGreggles

1

Molto probabilmente l'unità esterna è formata con FAT. FAT non supporta la gestione dei diritti per gli utenti, quindi il salvataggio è ok.

Oltre che l'Utente IIS non ha alcun diritto alle altre cartelle come Adamo menzionato già

11

nei commenti a un'altra risposta dici che questo è un'applicazione desktop, così lascia trattare ogni posizione separatamente.

Sotto Vista e oltre, un utente ordinario non ha i diritti per creare file nella directory principale dell'unità di sistema (in genere C :). Puoi vederlo da solo aprendo C: \ in explorer, facendo clic con il pulsante destro del mouse e cercando di creare un file - dovresti ottenere un prompt UAC. Pertanto, se si desidera scrivere su C: \, l'applicazione deve essere eseguita come amministratore, tramite un'elevazione di richiesta manifest appropriata oppure avviando un processo separato quando si desidera scrivere in quella posizione.

Dati applicazioni, Ambiente.SpecialFolder.ApplicationData dovrebbe comunque funzionare. Se si invia la directory attuale che restituisce ciò che ottieni?

+0

Grazie per la risposta! Ambiente.SpecialFolder.ApplicationData: C: \ Users \ MrGreggles \ AppData \ Roaming \ SIIYM Data.xml – MrGreggles

+0

Funziona ora, mi batte perché. – MrGreggles

+2

AppData dovrebbe sempre funzionare, è molto strano! – blowdart

Problemi correlati