Zugriff verweigert eine .tmp-Pfad
Ich versuche eine zip-Datei mit DotNetZip library. Ich lese den Pfad aus einer Datei und speichern zip-Datei. Aber das Programm stürzt ab, und wirft. Das ist mein code:
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(dir + "\\OUTPUT_FOLDERS");
StreamReader sr = new StreamReader(dir + "\\Tools\\SettingsForPath");
string path = sr.ReadToEnd();
sr.Close();
zip.Save(path + "\\SavedZip.zip");
Directory.Delete(dir + "\\OUTPUT_FOLDERS", true);
}
und hier ist mein Fehler:
System.UnauthorizedAccessException: Access to the path 'C:\Users\DotNetZip-nvan5kb5.tmp' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Ionic.Zip.SharedUtilities.CreateAndOpenUniqueTempFile(String dir, Stream& fs, String& filename)
at Ionic.Zip.ZipFile.get_WriteStream()
at Ionic.Zip.ZipFile.Save()
at Ionic.Zip.ZipFile.Save(String fileName)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen zu schreiben, um die
C:\Users
- Verzeichnis, und Sie haben nicht die Berechtigung das zu tun.Verwenden
Path.GetTempPath()
um den Namen des Verzeichnisses, in dem Sie schreiben können.Sehen http://msdn.microsoft.com/en-us/library/system.io.path.gettemppath.aspx für weitere Informationen.
Verwenden Sie es wie folgt:
zip.Save(path + "\\SavedZip.zip");
?Ich denke, dass problem ist in dem Verzeichnis für temporäre Dateien erstellt, die Sie keine Berechtigung haben. Versuchen Sie, temporäre Ordner, wie
und beim speichern verwenden
TempFileFolder
Eigenschaft vonZipFile
Objekt.Sollte der Benutzer wirklich Schreibzugriff haben, versuchen Sie, um zu überprüfen, ob Sie schreiben, Privilegien über den code vor dem schreiben auf CD.. Verwenden System.Sicherheit.AUFTRAGGEBER.WindowsIdentity.GetCurrent().Name nach Ihrem Namen..
Wenn es wirklich nur temporäre Nutzung der temp-Ordner wie oben angegeben