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.
Es gibt ein paar Möglichkeiten:
Sie sollten normalerweise nicht als Administrator ausgeführt werden, um in Ihren eigenen Ordner Dokumente zu schreiben.
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.
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%Tags und Links c#