Zugriff auf Pfad **** ist verweigert

8

Ich weiß, dass es schon eine Menge Zeug darüber gibt und habe ein paar Dinge ausprobiert, aber ich hatte kein Glück, es zu reparieren.

Ich habe ein C # -Programm, das ein XML-Dokument erstellt hat, und versuche es in einem Ordner in MyDocuments zu speichern. Ich bekomme die folgende Ausnahme, wenn ich die Funktion XMLDoc.Save aufruft.

  

Der Zugriff auf den Pfad 'C: \ Users \ Ash \ Documents \ ConfigOutput' wurde verweigert

Ich habe Visual Studio als Administrator ausgeführt. Irgendwelche Gedanken, wie man es beheben kann?

Ich habe versucht, auf dem Desktop und in den Ordner C: \ zu speichern.

Ich benutze Windows 7.

Das Ausführen der ausführbaren Datei scheint auch nicht zu funktionieren.

Entschuldigung Leute, es scheint, ich war dumm. Ich hatte dem Ausgabepfad tatsächlich keinen Dateinamen hinzugefügt. Ich werde die Frage nicht löschen, wenn jemand anderes von diesem Gotcha erledigt wird! Danke für die Hilfe / Kommentare.

    
user589195 18.05.2012, 09:59
quelle

5 Antworten

9

Es gibt ein paar Möglichkeiten:

  • ConfigOutput ist ein Ordner
  • ConfigOutput ist eine Datei, die gerade verwendet wird (geöffnet)
  • Sie sind nicht als Benutzer 'Ash'
  • angemeldet

Sie sollten normalerweise nicht als Administrator ausgeführt werden, um in Ihren eigenen Ordner Dokumente zu schreiben.

    
Henk Holterman 18.05.2012, 10:37
quelle
4

Sie müssen überprüfen und erhalten die Erlaubnis zu diesem Verzeichnis / Datei Ihre schreiben .. dafür Verwende Security namesapce

%Vor%     
FosterZ 18.05.2012 10:42
quelle
2

Es sieht so aus, als ob Sie keinen Dateinamen angeben und daher keine Datei mit demselben Namen wie ein vorhandenes Verzeichnis erstellen können. Ändern Sie den Pfad zu:

C: \ Benutzer \ Ash \ Documents \ ConfigOutput \ Out.xml

    
Richard 18.05.2012 10:53
quelle
1

Versuchen Sie, Ihre App als Administrator auszuführen.

Wenn Sie Ihre App debuggen möchten, starten Sie Visual Studio auch als Administrator.

Um den Start der App als Administrator zu erzwingen, werfen Sie einen Blick auf diesen Thread: Wie erzwinge ich meine. NET-Anwendung als Administrator auszuführen?

P.S. Überprüfen Sie, ob Ihre Datei nicht bereits von einem anderen FileStream o.ä. geöffnet wurde.

    
sickUnit 18.05.2012 10:22
quelle
1

Ich weiß nicht, ob dies einen Unterschied macht, aber Sie möchten den Ordner eher relativ als absolut angeben: Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) liefert Ihnen den Pfad der Dokumente des aktuellen Benutzers. Überprüfen Sie, ob es sich von dem von Ihnen angegebenen unterscheidet.

Wenn dies der Fall ist, müssen Sie die App möglicherweise unter einem anderen Benutzer oder Administrator ausführen, wie andere darauf hingewiesen haben. Offensichtlich darf ein Benutzer nicht nur Dateien im Dokumentenordner eines anderen Benutzers speichern.

Wenn ich meine Anwendung von Visual Studio aus debugge, ist der Dokumentenordner derselbe wie der Benutzer, bei dem ich gerade angemeldet bin und Visual Studio unter.

ausführe

Sie könnten <requestedExecutionLevel level="asInvoker" uiAccess="true|false"/> zuerst ausprobieren und schrittweise zu highestAvailable und requireAdministrator wechseln.

Alternativ fordern Sie die Berechtigungen ein, fangen Sie die Ausnahme ab und drucken Sie sie aus:

%Vor%     
Davio 18.05.2012 10:34
quelle

Tags und Links