2009-09-20 104 views
12

Ich habe eine kleine XML-Datei auf einem externen Laufwerk gespeichert, keine Probs. Aber dann habe ich versucht, den ApplicationData-Ordner und andere, sogar C: \, aber kein Glück. Ich bekomme einen Fehler wie "Zugriff auf den Pfad" C: \ "verweigert"."Zugriff auf den Pfad ... ist verweigert" (.NET C#)

Nur zur Bestätigung, die Datei wird erstellt und gelesen mit dem aktuellen Code, auf ein externes Laufwerk. Ich denke, das ist etwas mit Sicherheit & Berechtigungen zu tun, aber ich habe nichts zu nützlich gefunden.

Vielen Dank im Voraus, wenn Sie mir auf diesem Weg in die richtige Richtung zeigen können!

+0

Umm ... Ich weiß nicht warum, aber beim Aufwachen heute Morgen funktioniert es für ApplicationData. Es wäre schön zu wissen, warum. Ich hatte ein Problem beim Wechsel von Debug zu Release Build. Ich kann nur annehmen, dass es damit zusammenhängt. Danke allen für deine Gedanken! – MrGreggles

+0

Die auskommentierten "fipData" -Deklarationen in Ihrem Beispielcode geben keinen Dateinamen an - nur Pfade. Ist das ein Tippfehler? –

+0

Blush Matt, das könnte die Ursache gewesen sein. Langer Tag, Gehirn zappen. Danke Jungs alle für Ihre Ideen! – MrGreggles

Antwort

2

Ich kann mir nur vorstellen, dass die Anwendung im Kontext eines Benutzers ausgeführt werden muss, der keinen Zugriff auf das lokale Laufwerk hat, z. eine ASP.NET-Website, die unter dem anonymen IIS-Konto ausgeführt wird, oder ein Dienstkonto, das nur auf die relevanten Netzwerkspeicherorte zugreifen kann.

+0

Hoppla, der Kontext hier ist: * Mein persönlicher PC * Windows 7 * Desktop-App Ist es nur, dass meine UAC-Einstellungen (Standard) sind vielleicht zu hoch? Woher weiß ich, ob es auf dem Computer einer anderen Person funktioniert? – MrGreggles

1

Wahrscheinlich ist das externe Laufwerk mit FAT formatiert. FAT unterstützt keine Rechteverwaltung für Benutzer, daher ist das Speichern dort in Ordnung.

Neben, dass die IIS-Nutzer haben keine Rechte an den anderen Ordnern wie Adam bereits

erwähnt
11

In den Kommentaren zu einer anderen Antwort, die Sie sagen, dass dies eine Desktop-Anwendung ist, so läßt jeden Standort separat behandeln.

Unter Vista und darüber hinaus hat ein normaler Benutzer keine Rechte zum Erstellen von Dateien im Stammverzeichnis des Systemlaufwerks (normalerweise C :). Sie können dies selbst sehen, indem Sie im Explorer C: \ öffnen, mit der rechten Maustaste klicken und versuchen, eine Datei zu erstellen - Sie sollten eine UAC-Eingabeaufforderung erhalten. Wenn Sie also nach C: \ schreiben möchten, muss Ihre Anwendung als Administrator ausgeführt werden, über eine geeignete manifest anspruchsvolle Elevation, oder indem Sie einen separaten Prozess starten, wenn Sie an diesen Speicherort schreiben möchten.

Anwendungsdaten, Environment.SpecialFolder.ApplicationData sollte jedoch funktionieren. Wenn Sie das tatsächliche Verzeichnis ausgeben, das zurückgibt, was Sie erhalten?

+0

Danke für die Antwort! Environment.SpecialFolder.ApplicationData: C: \ Benutzer \ MrGreggles \ AppData \ Roaming \ SIIYM Data.xml – MrGreggles

+0

Es funktioniert jetzt, schlägt mich warum. – MrGreggles

+2

AppData sollte immer funktionieren, das ist sehr seltsam! – blowdart

Verwandte Themen