Unauthorized Access Exception

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von FlyingEaglE.

    Unauthorized Access Exception

    Hallo,

    ich habe das Problem beim Zugriff auf Ordner das ich o.g. Meldung erhalte.

    Dies sowohl bei Directory-Move(alt, neu) als auch beim Schreiben in eine Datei in dem Ordner.

    Ich bin als User X angemeldet, ich komme ohne Probleme in alle Ordner (lokal, eigene Dateien, Wechsel-HD), kann dort alles tun.
    Das Programm bzw Visual Studio läuft als User X.

    Das directory.move hat bis vor kurzem (k.a. ab wann) funktioniert.

    Ausführen als Administrator (.EXE im bin Ordner) hat auch nichts gebracht.

    Ich Danke für sachdienliche Hinweise.
    Grüße
    Fly
    @FlyingEaglE Willkommen im Forum. :thumbup:
    Welches Betriebssystem hast Du?
    Um welches Verzeichnis handelt es sich?
    Läuft das Programm als x64 / x86 / AnyCPU?
    => probierma als x86
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OS: Win 10
    VB 2017
    .NET: 4.7.1
    CPU: x86

    Das lief ja auch schon mal alles, weiß nich ob es ein VS-Update, geänderter Code oder ein OS-Update ist/war das zur jetzigen Nicht-Funktion führt(e).

    Aktueller Stand: Habe soeben ein Windows-Update durchgeführt, pöppte soeben auf, danach üblicher Reboot. Nun geht das wieder ... verstehe es nicht.

    Ok, zu früh gefreut, es geht nur der Teil mit dem Directory.Move.

    So ganz eigentlich ging und geht es mir darum, dass ich mit SSH.NET ein Verzeichnis auf einen Remote-Server per SCP kopiere.
    Dort verwende ich SCPClient und da dann die .upload-Funktion, welche das Lokale- und das Remote-Verzeichnis will.
    Soweit so gut, die gleichen Verzeichnisse wie bei o.g. bei Directory.Move erzeugen weiterhin die Exception, danach hatte ich Ordner innerhalb meiner eigenen Dateien verwendet - da müsste ich ja lesend auf jeden Fall zugreifen können - aber auch hier der gleiche Fehler.

    Hmmm, habe mir den Code nochmal angesehen, da ich hier noch am Basteln bin habe ich versch. Teile aus dem Netz kopiert, vielleicht ist da ein Fehlerchen drin und gar nicht in dem Code den ich verdächtige.
    Im besonderen sticht mir da die Geschichte mit dem IEnumerable ins Auge ...

    VB.NET-Quellcode

    1. Private Sub UploadDirectory(ByVal client As ScpClient, ByVal localPath As String, ByVal remotePath As String)
    2. Dim infos As IEnumerable(Of FileSystemInfo) = New DirectoryInfo(localPath).EnumerateFileSystemInfos()
    3. For Each infoFSI As FileSystemInfo In infos
    4. Dim FolderFileElement As FileInfo = New FileInfo(infoFSI.FullName)
    5. If FolderFileElement.Attributes.HasFlag(FileAttributes.Directory) Then
    6. Dim subPath As String = remotePath & "/" & FolderFileElement.Name
    7. client.RemotePathTransformation = RemotePathTransformation.DoubleQuote
    8. Console.WriteLine(client.ConnectionInfo.ServerVersion)
    9. Console.WriteLine("Uploading directory {0} to {1}", localPath, remotePath)
    10. Try
    11. 'Dim sw As StreamWriter = FolderFileElement.CreateText()
    12. 'sw.Write("buhu")
    13. 'sw.Close()
    14. ' verursacht auch Fehler
    15. ' die eigentliche Fehlerzeile
    16. client.Upload(FolderFileElement, subPath)
    17. Catch ex As Exception
    18. MsgBox(ex.ToString, MsgBoxStyle.OkOnly, FolderFileElement.Name)
    19. Exit Sub
    20. End Try
    21. UploadDirectory(client, FolderFileElement.FullName, remotePath & "/" & FolderFileElement.Name)
    22. Else
    23. Try
    24. client.Upload(FolderFileElement, remotePath & "/" & FolderFileElement.Name)
    25. Catch ex As Exception
    26. MsgBox(ex.ToString, MsgBoxStyle.OkOnly, FolderFileElement.Name)
    27. End Try
    28. End If
    29. Next
    30. End Sub

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „FlyingEaglE“ ()

    FlyingEaglE schrieb:

    Die Verbindung steht
    mit Lese- und Schreib-Rechten?
    Rechte zum erstellen und Löschen von Verzeichnissen und Dateien?
    Hat sich da ggf. was nach einem Update geändert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Evtl. mal das Try-Catch wegmachen weil das eh unnützt ist an der Stelle und die IDE knallen lassen. Bringt meistens mehr Infos als so ein Try-Catch.
    Sicher das du lesend Zugriff auf die Dateien hast? Nur weil du Sie siehst im Explorer heißt das nicht das du sie lesen darfst.
    Versuche diese mal zu öffnen und ggf. doch nochmal in die Settings zu gehen und zu schauen ob der User wirklich die Rechte hat.

    Ich hatte nämlich mal das Problem das ich die Dateien sehen konnte aber nicht öffnen. Nach erneuter Einstellung das ich lesen darf ging es dann.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Ich darf lesen und schreiben, alles.
    Ich kann bspw. mit NPP Textdateien anlegen, öffnen, schreiben, löschen.
    Alles, ich habe die Ordner ja angelegt ...

    Quellcode

    1. SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4
    2. Uploading directory F:\Foldername to /remoteverzeichnis
    3. * korrekte Ausgabe bis hierher
    4. Ausnahme ausgelöst: "System.UnauthorizedAccessException" in mscorlib.dll
    5. System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unbehandelte Ausnahme</Description><AppDomain>FXDFXD.exe</AppDomain><Exception><ExceptionType>System.UnauthorizedAccessException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Der Zugriff auf den Pfad "F:\Foldername" wurde verweigert.</Message><StackTrace> bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    6. bei 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)
    7. bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
    8. bei System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
    9. bei System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
    10. bei System.IO.StreamWriter..ctor(String path, Boolean append)
    11. bei System.IO.FileInfo.CreateText()
    12. bei FXDFXD.frmFMain.UploadDirectory(ScpClient client, String localPath, String remotePath)
    13. bei FXDFXD.frmFMain.btUpload_Click(Object sender, EventArgs e)
    14. bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    15. bei System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
    16. bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    17. bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    18. bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    19. bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    20. bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    21. bei System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
    22. bei System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
    23. bei System.Windows.Forms.ScrollableControl.WndProc(Message&amp;amp; m)
    24. bei System.Windows.Forms.ToolStrip.WndProc(Message&amp;amp; m)
    25. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
    26. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
    27. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    28. bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
    29. bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    30. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    31. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    32. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    33. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    34. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    35. bei FXDFXD.My.MyApplication.Main(String[] Args)</StackTrace><ExceptionString>System.UnauthorizedAccessException: Der Zugriff auf den Pfad "F:\Foldername" wurde verweigert.
    36. bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    37. bei 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)
    38. bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
    39. bei System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
    40. bei System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
    41. bei System.IO.StreamWriter..ctor(String path, Boolean append)
    42. bei System.IO.FileInfo.CreateText()
    43. bei FXDFXD.frmFMain.UploadDirectory(ScpClient client, String localPath, String remotePath)
    44. bei FXDFXD.frmFMain.btUpload_Click(Object sender, EventArgs e)
    45. bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    46. bei System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
    47. bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    48. bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    49. bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    50. bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    51. bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    52. bei System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
    53. bei System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
    54. bei System.Windows.Forms.ScrollableControl.WndProc(Message&amp;amp; m)
    55. bei System.Windows.Forms.ToolStrip.WndProc(Message&amp;amp; m)
    56. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
    57. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
    58. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    59. bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
    60. bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    61. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    62. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    63. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    64. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    65. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    66. bei FXDFXD.My.MyApplication.Main(String[] Args)</ExceptionString></Exception></TraceRecord>


    Habe zur Sicherheit mal doch jetzt alle Rechte neu gesetzt, keine Änderung im Verhalten des Codes.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FlyingEaglE“ ()

    So, ich habe es nun am Laufen ... am Ende war es ein Misverständnis meinerseits über die Funktion der SSHNet-Funktionen, allerdings waren die Fehlermeldungen nicht sehr hilfreich.
    Den Fehler selbst habe ich produziert in dem ich einen falschen Remote-Pfad hatte, der aber optisch auf den 1., 2. und 3. Blick korrekt aussah :)

    Nun denn, Danke für die Ansätze.