Lesen einer Datei geöffnet von „Scanner und Kameras“ wirft UnauthorizedAccessException

StackOverflow https://stackoverflow.com/questions/3963723

  •  09-10-2019
  •  | 
  •  

Frage

erfordert Unsere Anwendung einen Benutzer ein Foto von ihrer Kamera zu wählen. Die Kameras, die ich mit getestet, während das Hinzufügen dieser Funktion alle als Laufwerksbuchstaben im „Arbeitsplatz“ so Laden und die Arbeit mit dem Bild wurde ein Kinderspiel erscheinen würde. Ein Kollege hat mir seine Kamera, die nicht als Laufwerk mounten es den schrecklichen „Scanner- und Kamera-Assistenten“ auslöst. Ich wurde aufgefordert, zu sehen, dass in den „Arbeitsplatz“ ein Eintrag für die Kamera war und in der Tat konnte ich durchsuchen und wählen Sie Dateien von einem Standard Openfiledialog. - GREAT

Außer, dass, wenn ich zu ACCESS versuchen, die Datei I „UnauthorizedAccessException“ erhalten. Bei der Untersuchung sehe ich, dass es tatsächlich ist, die Dateien aus diesem Ort geladen: C: \ Dokumente und Einstellungen \ sk \ Lokale Einstellungen \ Temporary Internet Files \ Content.IE5 \ AXY0DNE3

Was in der Welt ?! IE5.5 ??

Von hier Dinge kommen immer wieder bergab. Dieser Ort ist offenbar eine sehr gut Lage versteckt, dass ich nur navigieren, indem Sie direkt den Pfad in der Explorer-Leiste eingeben. Ich dann dachte, ich könnte einfach die Datei in einem temporären Speicherort und die Arbeit mit ihm von dort kopieren. Also tat ich das, aber ich kann immer noch nicht die Arbeit mit der Datei, die gleiche Ausnahme werfen: Zugriff auf den Pfad. 'C: \ Dokumente und Einstellungen \ sk \ Lokale Einstellungen \ Temp \ IMG_0005 [1] .jpg' verweigert

Es scheint, dass die Berechtigungseinstellungen zusammen mit der Datei kopiert wurden (sinnvoll).

Als Abhilfe, die ich meine Benutzer angewiesen haben, den schrecklichen kleinen Assistenten zu verwenden, kopieren Sie die Dateien in ein temporäres Verzeichnis und dann fro dort wählen. Ich weiß nicht, wie diese, aber ich brauchte diese Funktion zum Einsatz heute. Mit einer Vermeidung des Problems an Ort und Stelle möchte ich nun versuchen, diese Arbeit, wenn möglich. Im Idealfall könnte ich nur die Arbeit mit der Datei, ohne sie um an andere Orte zu kopieren, etc. Was ich nicht verstehe, ist, warum die UnauthorizedAccessException ist sein Wurf.

Ich hoffe, dass jemand da draußen eine ähnliche Herausforderung konfrontiert und einige Tipps teilen kann, wie mit diesen Dateien zu arbeiten. Ich würde lieber nicht gehen, um die ganze WIA Route und die Arbeit mit den Dateien über die Kamera-Schnittstelle.

War es hilfreich?

Lösung

Die Datei wird nur gelesen. Ich habe dies geprüft sollte!

Natürlich gibt es viele Möglichkeiten, dies zu umgehen. Zuerst dachte ich, „werde ich zwingen, nur die Lese nur nach unten Attribut“, aber dann dachte ich, „Wartezeit, sollte ich das nicht tun müssen, bin ich erst, nachdem alle Lesen der Datei“ So lange Geschichte kurz, die mich tief gemacht Blick in meine IO-Bibliothek und findet, dass ich nicht explizit Fileaccess zu lesen, wie ich soll einstellen:

public static byte[] ReadWholeFileBytes(string filename)
{
    Guard.ArgumentNotNullOrEmptyString(filename, "filename");

    if(!File.Exists(filename))
    {
        throw new FileNotFoundException("Failed finding file " + filename);
    }

    using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        return ReadWholeStream(stream);
    }
}

Jedoch zum Zweck der Herstellung dieser Antwort komplett für andere können Sie die Read fallen nur mit diesem kleinen Stück Code:

File.SetAttributes(openFile.FileName, FileAttributes.Normal);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top