Verzeichnisgröße berechnen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    Hi,
    ich habe eine kleine Sub, welche nur die lesbaren Ordner und Objekte berücksichtigen sollte.
    Diese gibt die Anzahl der in einem vorgegebenen Stammordner enthaltenen Unterordner, die Gesamtzahl aller enthaltenen Dateien und in einer Liste alle enthaltenen Dateien zurück.
    Diese Sub verwende ich für alle möglichen Aufgaben.

    EDIT: Aber ich lasse auch auf dem System-Laufwerk nur das Einlesen von:
    Sysdrive:\Benutzer\Öffentlich\Öffentliche Dokumente
    Sysdrive:\Benutzer\Öffentlich\Öffentliche Downloads
    Sysdrive:\Benutzer\Öffentlich\Öffentliche Bilder
    Sysdrive:\Benutzer\Öffentlich\Öffentliche Musik
    Sysdrive:\Benutzer\Öffentlich\Öffentliche Videos
    und
    Sysdrive:\Benutzer\%Benutzername%\Dokumente
    Sysdrive:\Benutzer\%Benutzername%\Downloads
    Sysdrive:\Benutzer\%Benutzername%\Bilder
    Sysdrive:\Benutzer\%Benutzername%\Musik
    Sysdrive:\Benutzer\%Benutzername%\Videos

    Als Quellordner zu, um Zugriffssperren zu vermeiden.

    Diese lese ich mit:
    Dim allUsers As String = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Windows).Replace("Windows", "Users"))
    Dim commonDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
    Dim commonDownloads As String = Path.Combine(allUsers, "Public\Downloads")
    Dim commonMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic)
    Dim commonPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures)
    Dim commonVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos)

    und

    Dim myDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    Dim myDownloads As String = IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
    Dim myMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
    Dim myPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    Dim myVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)

    aus den System-Einstellungen aus.


    Mit

    VB.NET-Quellcode

    1. searchOption = SearchOption.AllDirectories

    werden alle Unterordner durchsucht

    Mit

    VB.NET-Quellcode

    1. searchOption = SearchOption.AllDirectories

    wird nur die Stammebene eingelesen

    VB.NET-Quellcode

    1. Private Sub Stammverzeichnis einlesen(verzeichnis As String, searchOption)
    2. fileList.Clear()
    3. foldercount = 0
    4. filecount = 0
    5. TraverseDirectory(verzeichnis, SearchOption, fileList, foldercount, filecount)
    6. ' Nach dem Aufruf enthält:
    7. ' filelist : Liste aller enthaltenen Dateien
    8. ' Foldercount : Anzahl der enthaltenen Verzeichnisse
    9. ' Filecount : Anzahl aller enthaltenen Dateien
    10. End If
    11. Private Sub TraverseDirectory(ByVal directory As String, ByVal searchOption As SearchOption, ByRef fileList As List(Of String), ByRef folderCount As Integer, ByRef fileCount As Integer)
    12. Try
    13. If (searchOption = SearchOption.AllDirectories) Then
    14. ' Alle Dateien im aktuellen Verzeichnis hinzufügen
    15. Dim filesInDirectory As String() = IO.Directory.GetFiles(directory)
    16. fileList.AddRange(filesInDirectory)
    17. fileCount += filesInDirectory.Length
    18. ' Anzahl der enthaltenen Ordner erhöhen
    19. folderCount += 1
    20. ' Rekursiv die Unterverzeichnisse durchlaufen
    21. For Each subDirectory As String In IO.Directory.GetDirectories(directory)
    22. TraverseDirectory(subDirectory, searchOption, fileList, folderCount, fileCount)
    23. Next
    24. Else
    25. ' Nur Dateien im aktuellen Verzeichnis hinzufügen
    26. Dim filesInDirectory As String() = IO.Directory.GetFiles(directory)
    27. fileList.AddRange(filesInDirectory)
    28. fileCount += filesInDirectory.Length
    29. End If
    30. Catch ex As System.Exception
    31. ' Fehlerbehandlung hier
    32. End Try
    33. End Sub

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Dideldum“ ()

    Moin moin

    Also ich habe mal umgebaut und bin dann doch wieder etwas, nein sehr "verwundert" über das "unlogische" Windows.

    Zum Beispiel:
    Der Pfad im Explorer: C:\Users\Fox\Pictures
    Der Pfad im Code: Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)

    Der Pfad im Explorer: C:\Users\Fox\Downloads
    Der Pfad im Code: Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")

    Warum ist der Eigene Ordner mal direkt ansprechbar und warum muss ich dann plötzlich einen Pfad zusammenbauen ?( ?(
    Warum ist die Schreibweise so unterschiedlich? "Pictures" "MyPictures" ?(


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class DirectorySizeCalculator
    2. ' Initialisierung der Listen und Zählvariablen
    3. Private ListofFiles As New List(Of String)()
    4. Private CountFolders As Integer = 0
    5. Private CountFiles As Integer = 0
    6. Private TotalBytes As Long = 0
    7. Public Sub ReadUserDirectorys()
    8. ' Liste der zu durchsuchenden Verzeichnisse
    9. Dim directories As String() = {
    10. Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
    11. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads"),
    12. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Contacts"),
    13. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Saved Games"),
    14. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Links"),
    15. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Searches"),
    16. Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData"),
    17. Environment.GetFolderPath(Environment.SpecialFolder.MyMusic),
    18. Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
    19. Environment.GetFolderPath(Environment.SpecialFolder.MyVideos),
    20. Environment.GetFolderPath(Environment.SpecialFolder.Favorites),
    21. Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
    22. Environment.GetFolderPath(Environment.SpecialFolder.Resources),
    23. Environment.GetFolderPath(Environment.SpecialFolder.History),
    24. Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    25. }
    26. 'Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData\Roaming"),
    27. 'Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData\LocalLow"),
    28. 'Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData\Local"),
    29. 'Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
    30. ' Rücksetzen der Listen und Zählvariablen
    31. ListofFiles.Clear()
    32. CountFolders = 0
    33. CountFiles = 0
    34. TotalBytes = 0
    35. ' Durchlaufen und Verarbeiten der Verzeichnisse
    36. For Each dir As String In directories
    37. AnalyzeDirectory(dir, SearchOption.AllDirectories, ListofFiles, CountFolders, CountFiles, TotalBytes)
    38. Next
    39. ' Umrechnen der Bytes
    40. 'Dim totalSizeInGB As Double = totalBytes / 1073741824.0 ' Byte in Gigabyte umrechnen
    41. Dim totalSizeInMB As Double = TotalBytes / 1048576.0 ' Byte in Megabyte umrechnen
    42. ' Ausgabe der Ergebnisse
    43. Debug.WriteLine($"{NewCrlLf}Dateien: {CountFiles}{NewCrlLf}Ordner: {CountFolders}{NewCrlLf}Gesamtgröße: {totalSizeInMB:N2} MegaBytes{NewCrlLf}Gesamtgröße: {TotalBytes} Byte")
    44. 'MessageBox.Show($"Dateien: {fileCount}, Ordner: {folderCount}, Gesamtgröße: {totalSizeInMB:N2} MBytes")
    45. End Sub
    46. Private Sub AnalyzeDirectory(ByVal dirPath As String, ByVal searchOption As SearchOption, ByRef fileList As List(Of String), ByRef folderCount As Integer, ByRef fileCount As Integer, ByRef totalBytes As Long)
    47. Try
    48. ' Überprüfen, ob das Verzeichnis existiert
    49. If Directory.Exists(dirPath) Then
    50. ' Versuchen Sie, auf das Verzeichnis zuzugreifen
    51. Dim directoryInfo As New DirectoryInfo(dirPath)
    52. ' Prüfen Sie, ob Ihr Programm Zugriff auf das Verzeichnis hat
    53. If directoryInfo.Exists Then
    54. ' Alle Dateien im aktuellen Verzeichnis hinzufügen
    55. Dim filesInDirectory As String() = Directory.GetFiles(dirPath)
    56. fileList.AddRange(filesInDirectory)
    57. fileCount += filesInDirectory.Length
    58. For Each file As String In filesInDirectory
    59. totalBytes += New FileInfo(file).Length
    60. Next
    61. ' Anzahl der enthaltenen Ordner erhöhen
    62. folderCount += Directory.GetDirectories(dirPath).Length
    63. ' Rekursiv die Unterverzeichnisse durchlaufen, wenn AllDirectories gewählt ist
    64. If (searchOption = SearchOption.AllDirectories) Then
    65. For Each subDirectory As String In Directory.GetDirectories(dirPath)
    66. AnalyzeDirectory(subDirectory, searchOption, fileList, folderCount, fileCount, totalBytes)
    67. Next
    68. End If
    69. Else
    70. ' Verzeichnis existiert nicht oder Zugriff verweigert
    71. Debug.WriteLine($"Zugriff auf Verzeichnis {dirPath} verweigert.{NewCrlLf}")
    72. End If
    73. Else
    74. ' Verzeichnis existiert nicht
    75. Debug.WriteLine($"Verzeichnis {dirPath} existiert nicht.{NewCrlLf}")
    76. End If
    77. Catch ex As UnauthorizedAccessException
    78. ' Zugriff verweigert, Verzeichnis überspringen
    79. Debug.WriteLine($"Zugriff auf Verzeichnis {dirPath} verweigert:{NewCrlLf} {ex.Message}")
    80. Catch ex As DirectoryNotFoundException
    81. ' Verzeichnis nicht gefunden, Verzeichnis überspringen
    82. Debug.WriteLine($"Verzeichnis {dirPath} nicht gefunden:{NewCrlLf} {ex.Message}")
    83. Catch ex As PathTooLongException
    84. ' Pfad zu lang, Verzeichnis überspringen
    85. Debug.WriteLine($"Pfad zu lang für Verzeichnis {dirPath}:{NewCrlLf} {ex.Message}")
    86. Catch ex As IOException
    87. ' Ein-/Ausgabefehler, Verzeichnis überspringen
    88. Debug.WriteLine($"Ein-/Ausgabefehler beim Zugriff auf Verzeichnis {dirPath}:{NewCrlLf} {ex.Message}")
    89. Catch ex As Exception
    90. ' Andere Ausnahmen behandeln
    91. Debug.WriteLine($"Unbekannter Fehler beim Zugriff auf Verzeichnis {dirPath}:{NewCrlLf} {ex.Message}")
    92. End Try
    93. End Sub
    94. End Class


    DebugAusgaben:

    XML-Quellcode

    1. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Bilder verweigert:
    2. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Bilder" wurde verweigert.
    3. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Musik verweigert:
    4. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Musik" wurde verweigert.
    5. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Videos verweigert:
    6. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Videos" wurde verweigert.
    7. Zugriff auf Verzeichnis C:\Users\Fox\AppData\Local\Anwendungsdaten verweigert:
    8. Der Zugriff auf den Pfad "C:\Users\Fox\AppData\Local\Anwendungsdaten" wurde verweigert.
    9. Zugriff auf Verzeichnis C:\Users\Fox\AppData\Local\Temporary Internet Files verweigert:
    10. Der Zugriff auf den Pfad "C:\Users\Fox\AppData\Local\Temporary Internet Files" wurde verweigert.
    11. Zugriff auf Verzeichnis C:\Users\Fox\AppData\Local\Verlauf verweigert:
    12. Der Zugriff auf den Pfad "C:\Users\Fox\AppData\Local\Verlauf" wurde verweigert.
    13. Zugriff auf Verzeichnis C:\Users\Fox\AppData\Roaming\Microsoft\Windows\Start Menu\Programme verweigert:
    14. Der Zugriff auf den Pfad "C:\Users\Fox\AppData\Roaming\Microsoft\Windows\Start Menu\Programme" wurde verweigert.
    15. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Bilder verweigert:
    16. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Bilder" wurde verweigert.
    17. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Musik verweigert:
    18. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Musik" wurde verweigert.
    19. Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Videos verweigert:
    20. Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Videos" wurde verweigert.
    21. Dateien: 42853
    22. Ordner: 2477
    23. Gesamtgröße: 1.354,44 MegaBytes
    24. Gesamtgröße: 1420236589 Byte
    25. Angabe vom Explorer (ganze Benutzerverzeichnis)
    26. Dateien: 42873
    27. Ordner: 2424
    28. Größe: 1,34GB ( 1.444.050.300 )


    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Also was weiterhin auffällt ist, dass alle Fehler bei einem Pfad kommen der deutsch endet.
    Vielleicht gehört das zu den allgemeinen Problemen die @slice erwähnte.

    Im Deutschen gibt es auch Bilder und Eigene Bilder. Vielleicht macht das noch n Unterschied?

    Amelie schrieb:

    Der Pfad im Explorer: C:\Users\Fox\Pictures
    Der Pfad im Code: Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)

    Der Pfad im Explorer: C:\Users\Fox\Downloads
    Der Pfad im Code: Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")

    Warum ist der Eigene Ordner mal direkt ansprechbar und warum muss ich dann plötzlich einen Pfad zusammenbauen
    SpecialFolder enthält eine Auflistung an Pfaden, wenn Downloads da nicht mit aufgenommen wurde, dann musst du natürlich selbst hin navigieren.

    Nur so nebenbei bei mir wird von SpecialFolder auch der deutsche Pfadname zurückgegeben. Also ich habe da "Bilder" stehen. Und nicht Pictures.

    Aber hast du denn mal versucht den Pfad einfach selbst einzugeben? Außerdem würde ich vorschlagen, damit wir mit diesen Namen-Wirrungen nicht in die Bredouille kommen, du legst mal ein Netzlaufwerk an das zu einem dieser Fehlerpfade verlinkt ist, dann gibt es sicher keine Namenskonflikte mehr.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    @Haudruferzappeltnoch
    Wie / was meinst du mit den beiden Sachen?
    Aber hast du denn mal versucht den Pfad einfach selbst einzugeben?


    Netzlaufwerk an das zu einem dieser Fehlerpfade verlinkt ist...


    Der Pfad im Explorer: C:\Users\Fox\Pictures
    Das zeigt der Expolrer, wenn ich auf Eigenschaften / Pfad schaue. Im Eigentlichen Verzeichnisbaum steht auch Bilder usw.. eben alles in Deutsch.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    selbst eingeben? Na einfach den String hinschreiben. Ich weiß ja auch nicht von welchen Problemen slice redet, und ob man die umgehen kann, aber erstmal verwirrt mich unfassbar, das an verschiedenen Stellen im Code verschiedene Pfade stehen für denselben Ort.

    Netzlaufwerk geht scheinbar nicht, da muss ich nochmal schauen...
    Meinte natürlich ein substituiertes Laufwerk kein Netzlaufwerk, am Ende kommts aufs Selbe hinaus, dass du es von Hand eingibst. Nur beim Pfad kann man sich dann nicht vertippen. Die Zuordnung übernimmt dann außerdem Windows und man kann prüfen ob das ein Unterschied zu dem ist, was das Programm tut. Das ist was mir zu slices Einwänden eingefallen ist.

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

    Hi @Amelie

    Ich erhalte aus den SpecialFolders wie Du auch englische Bezeichnungen.
    Das ist m.W. von der Windows-Installations-Quelle abhängig.
    Aber das juckt ja nicht, wichtig ist, dass die Pfade mit der Nutzung der Specialfolders so ansprechbar sind, dass diese auf jedem System stimmen.
    Egal, ob der Benutzer die umbenannt oder den Pfad dieser Ordner im System geändert hat. ;)

    Das "My" in der Bezeichnung bedeutet (i.d.R) in den SpecialFolders, dass der betreffende Ordner im C:\Users\%Benutzername% enthalten ist.
    Das "Common" in der Bezeichnung bedeutet in den SpecialFolders, dass der betreffende Ordner im C:\Users\All Users\ liegt oder zumindest für alle User Geltung hat.
    Beginnt ein SpecialFolder mit anderen Zeichen, liegt der irgendwo anders auf der Systemplatte.
    Leider hat MS das eigentlich sinnvolle System nicht konsequent umgesetzt.
    So ist z.B. beim Desktop:
    System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirector der Desktop in "C:\Users\All Users\Desktop"
    während
    System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop und nicht wie zu erwarten wäre System.Environment.GetFolderPath(Environment.SpecialFolder.MyDesktop der Desktop des Benutzers in "C:\Users\%Benutzername%\Desktop"

    Ich nutze in meinem derzeitigen Projekt folgende Zuweisungen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim allUsers As String = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Windows).Replace("Windows", "Users"))
    2. Dim winDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Windows)
    3. Dim fontsDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Fonts)
    4. Dim localizedResources As String = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalizedResources) ' Leerer String
    5. Dim programFiles As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
    6. Dim programFilesX86 As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
    7. Dim resources As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Resources)
    8. Dim systemDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.System)
    9. Dim systemDir64 As String = System.Environment.GetFolderPath(Environment.SpecialFolder.SystemX86)
    10. Dim commonAdminTools As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonAdminTools)
    11. Dim commonAppData As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
    12. Dim commonDownloads As String = Path.Combine(allUsers, "Public\Downloads")
    13. Dim commonDesktop As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)
    14. Dim commonDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
    15. Dim commonMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic)
    16. Dim commonOEMLinks As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonOemLinks)
    17. Dim commonPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures)
    18. Dim commonProgramFiles As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)
    19. Dim commonProgramFilesX86 As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86)
    20. Dim commonPrograms As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms)
    21. Dim commonStartmenu As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu)
    22. Dim commonStartUp As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup)
    23. Dim commonTemplates As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonTemplates)
    24. Dim commonVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos)
    25. Dim myAdminTools As String = System.Environment.GetFolderPath(Environment.SpecialFolder.AdminTools)
    26. Dim myAppData As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    27. Dim myCDBurning As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CDBurning)
    28. Dim myComputer As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) ' leerer String
    29. Dim myCookiesDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies)
    30. Dim myDesktop As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    31. Dim MyDesktopDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) ' Doppelt = Desktop
    32. Dim myDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    33. Dim myDownloads As String = IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
    34. Dim myFavorites As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites)
    35. Dim myHistory As String = System.Environment.GetFolderPath(Environment.SpecialFolder.History)
    36. Dim myInternetCache As String = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)
    37. Dim myLocalAppData As String = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
    38. Dim myMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
    39. Dim myNetworkShortcuts As String = System.Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts)
    40. Dim myPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    41. Dim myPrinterShortcuts As String = System.Environment.GetFolderPath(Environment.SpecialFolder.PrinterShortcuts)
    42. Dim myPrograms As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Programs)
    43. Dim myRecent As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Recent)
    44. Dim mySendTo As String = System.Environment.GetFolderPath(Environment.SpecialFolder.SendTo)
    45. Dim myStartmenu As String = System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)
    46. Dim myStartup As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Startup)
    47. Dim myTemplates As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Templates)
    48. Dim myUserProfile As String = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
    49. Dim myVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)


    Hier aus meinem Manual:
    Globale Platzhalter

    Platzhalter Aufruf Ziel

    %ProgramFiles% <file:%ProgramFiles%\> (<file:C:\Program Files\>)
    %CommonProgramFiles% <file:%CommonProgramFiles%\> (<file:C:\Program Files\Common Files\>)
    %ProgramFilesX86% <file:%ProgramFilesX86%\> (<file:C:\Program Files (x86)\>)
    %CommonProgramFilesX86% <file:%CommonProgramFilesX86%\> (<file:C:\Program Files (x86)\Common Files\>)

    %CommonAppData% <file:%CommonAppData%\> (<file:C:\ProgramData\>)
    %CommonStartMenu% <file:%CommonStartMenu%\> (<file:C:\ProgramData\Microsoft\Windows\Start Menu\>)
    %CommonPrograms% <file:%CommonPrograms%\> (<file:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\>)
    %CommonAdminTools% <file:%CommonAdminTools%\> (<file:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\>)
    %CommonStartUp% <file:%CommonStartUp%\> (<file:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\>)
    %CommonTemplates% <file:%CommonTemplates%\> (<file:C:\ProgramData\Microsoft\Windows\Templates\>)

    Benutzer-Ordner

    Platzhalter Aufruf Ziel

    %MyUserProfile% <file:%MyUserProfile%\> (<file:C:\Users\%Benutzername%\>)
    %MyLocalAppData% <file:%MyLocalAppData%\> (<file:C:\Users\%Benutzername%\AppData\Local\>)
    %MyCDBurning% <file:%MyCDBurning%\> (<file:C:\Users\%Benutzername%\AppData\Local\Microsoft\Windows\Burn\Burn\>)
    %MyHistory% <file:%MyHistory%\> (<file:C:\Users\%Benutzername%\AppData\Local\Microsoft\Windows\History\>)
    %MyInternetCache% <file:%MyInternetCache%\> (<file:C:\Users\%Benutzername%\AppData\Local\Microsoft\Windows\iNetCache\>)
    %MyCookiesDir% <file:%MyCookiesDir%\> (<file:C:\Users\%Benutzername%\AppData\Local\Microsoft\Windows\iNetCookies\>)
    %MyRoamingAppData% <file:%MyRoamingAppData%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\>)
    %MyNetworkShortcuts% <file:%MyNetworkShortcuts%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Network Shortcuts\>)
    %MyPrinterShortcuts% <file:%MyPrinterShortcuts%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\>)
    %MyRecent% <file:%MyRecent%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Recent\>)
    %MySendTo% <file:%MySendTo%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\SendTo\>)
    %MyStartMenu% <file:%MyStartMenu%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Start Menu\>)
    %MyPrograms% <file:%MyPrograms%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\>)
    %MyAdminTools% <file:%MyAdminTools%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools\>)
    %MyStartUp% <file:%MyStartUp%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\>)
    %MyTemplates% <file:%MyTemplates%\> (<file:C:\Users\%Benutzername%\AppData\Roaming\Microsoft\Windows\Templates\>)
    %MyDesktop% <file:%MyDesktop%\> (<file:C:\Users\%Benutzername%\Desktop\>)
    %MyDocuments% <file:%MyDocuments%\> (<file:C:\Users\%Benutzername%\Documents\>)
    %MyFavorites% <file:%MyFavorites%\> (<file:C:\Users\%Benutzername%\Favorites\>)
    %MyMusic% <file:%MyMusic%\> (<file:C:\Users\%Benutzername%\Music\>)
    %MyPictures% <file:%MyPictures%\> (<file:C:\Users\%Benutzername%\Pictures\>)
    %MyVideos% <file:%MyVideos%\> (<file:C:\Users\%Benutzername%\Videos\>)

    Gemeinsame Ordner

    Platzhalter Aufruf Ziel

    %CommonDesktop% <file:%CommonDesktop%\> (<file:C:\Users\Public\Desktop\>)
    %CommonDocuments% <file:%CommonDocuments%\> (<file:C:\Users\Public\Documents\>)
    %CommonMusic% <file:%CommonMusic%\> (<file:C:\Users\Public\Music\>)
    %CommonPictures% <file:%CommonPictures%\> (<file:C:\Users\Public\Pictures\>)
    %CommonVideos% <file:%CommonVideos%\> (<file:C:\Users\Public\Videos\>)

    System-Ordner

    Platzhalter Aufruf Ziel

    %WinDir% <file:%WinDir%\> (<file:C:\Windows\>)
    %FontsDir% <file:%FontsDir%\> (<file:C:\Windows\Fonts\>)
    %Resources% <file:%Resources%\> (<file:C:\Windows\Resources\>)
    %SystemDir% <file:%SystemDir%\> (<file:C:\Windows\System32\>)
    %SystemDir64% <file:%SystemDir64%\> (<file:C:\Windows\SysWOW64\>)





    Allerdings ist mir auch nicht klar, warum bei Dir das Directory.exists in einen Fehler läuft.

    @Haudruferzappeltnoch meinte wohl, dass Du einfach mal einen Befehl wie folgenden testen könntest.

    VB.NET-Quellcode

    1. dim test_Bool as boolean = false
    2. try
    3. test = io.path.directory.exists("C:\Users\Fox\Pictures")
    4. debug.print "1. Test: " & test
    5. Catch ex As System.Exception
    6. Debug.print ("1. Test: " & ex.message)
    7. End Try
    8. try
    9. test = io.path.directory.exists(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures))
    10. debug.print "2. Test: " & test
    11. Catch ex As System.Exception
    12. Debug.print ("2. Test: " & ex.message)
    13. End Try

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Dideldum“ ()

    @Dideldum
    Moin moin

    Test ergibt in beiden Fällen ein "True" :thumbup:

    VB.NET-Quellcode

    1. Dim chkDir As Boolean = False
    2. Dim chkDir2 As Boolean = False
    3. Try
    4. chkDir = IO.Directory.Exists("C:\Users\Fox\Pictures")
    5. chkDir2 = IO.Directory.Exists("C:\Users\Public\Pictures")
    6. Debug.Print($"Test 1: {chkDir} - {chkDir2}")
    7. Catch ex As System.Exception
    8. Debug.Print($"1. Test: {ex.Message}")
    9. End Try
    10. Try
    11. chkDir = IO.Directory.Exists(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures))
    12. chkDir2 = IO.Directory.Exists(System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures))
    13. Debug.Print($"Test 2: {chkDir} - {chkDir2}")
    14. Catch ex As System.Exception
    15. Debug.Print($"2. Test: {ex.Message}")
    16. End Try
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @Amelie,

    hallöchen.

    Wo bricht denn in Deinem obigen Script die Einzelschrittverfolgung ab und läuft dann in Zeile 84 in den Error?

    P.S. eine vielleicht nützliche Ergänzung zu Deinem Programm:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function BytesToMBGBTB(bytes As Long) As String
    2. Dim vl As String
    3. Dim length As Long = bytes
    4. If length < 1024 Then
    5. vl = length.ToString & " Bytes"
    6. ElseIf length < 1024 * 1024 Then
    7. vl = Math.Round(length / 1024, 3).ToString & " KB"
    8. ElseIf length < CLng(1024) * 1024 * 1024 Then
    9. vl = Math.Round(length / 1024 / 1024, 3).ToString & " MB"
    10. ElseIf length < CLng(1024) * 1024 * 1024 * 1024 Then
    11. vl = Math.Round(length / 1024 / 1024 / 1024, 3).ToString & " GB"
    12. Else
    13. vl = Math.Round(length / 1024 / 1024 / 1024 / 1024, 3).ToString & " TB"
    14. End If
    15. Return vl
    16. End Function
    @Dideldum
    Abbruch, naja wenn er eins von diesen Verzeichnissen lesne soll.

    Irgendwie nervt mich dieses Windows grad wieder, weil nichts konsequent gemacht ist. :cursing:
    Ich bekommt das nicht in den Kopf, warum ich die Verzeichnisse kopieren darf aber dessen Größe ermitteln wird mir verweigert.
    Das ist doch unsinnig! ?(
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    [off topic]

    Amelie schrieb:

    Also im Explorer sehe ich:
    Im Code verwende ich:

    VB.NET-Quellcode

    1. Public Property CurrentUserPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))


    Dabei bekomme ich unter anderem diesen Fehler geworfen.
    Fehler beim Ermitteln der Größe des Verzeichnisses C:\Users\Fox\Documents\Eigene Bilder: Der Zugriff auf den Pfad "C:\Users\Fox\Documents\Eigene Bilder" wurde verweigert.


    Das kann doch gar nicht sein, das sind zwei unterschiedliche Pfade, den Path.Combine kombiniert nichts ! :rolleyes:

    Environment.SpecialFolder.MyPictures ist das Enum das zum ziel führt !
    @FormFollowsFunction Ich würde nicht sagen, dass das off topic, ist. Wir kommen hier ja keinen Schritt weiter. Dein Punkt bestätigt auch wieder meine Vermutung, dass immer noch keine korrekte Fehlerbeschreibung vorliegt.

    Amelie schrieb:

    Irgendwie nervt mich dieses Windows grad wieder, weil nichts konsequent gemacht ist.
    Ich denke nicht, dass es an Windows liegt. Nu hör doch mal auf die Leuts und such eine einzige bestimmte Datei raus, die nicht tut. Isoliert ausprobieren, die Length zu lesen. Dann probieren ob kopieren mit der Datei geht.
    Du hast da eine Schleife laufen und für mich siehts bisher so aus als würde ein Teil funktionieren und ein Teil nicht. Da ist doch klar, dass man die fehlerhaften Elemente erstmal identifizieren muss. Man hat das Gefühl, du hast dein Problem noch nichtmal angefangen zu debuggen. (Und wir sind im Thema schon auf 2 Seiten am Ursachen diskutieren.)
    Hi @Amelie
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
    Path.Combine verbindet Pfad-Teilstring1 mit Pfad-Teilstring2
    Du hast aber nur einen String im Combine.
    Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
    Das Ergebnis ist "C:\Users\%Benutzername%".

    Zum Combine fehlt ein zweiter Kommagetrennter Parameter wie z.B. "Pictures"
    Das würde dann so formuliert:
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),"Pictures")
    (Dieser Pfad lässt sich nur auflösen, wenn tatsächlich ein Ordner "C:\Users\%Benutzername%\Pictures" existiert. Also ganz unabhängig von dem in den "Bilder"-Eigenschaften eingetragenen Verzeichnis).

    (Der SpecialFolder "MyPictures"
    System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    verlinkt IMMER auf den Pfad, der in einem Windows-System dem System-Ordner "Bilder" zugewiesen ist, selbst dann, wenn der User den Ordnerpfad über die Eigenschaften dem System-Link zu "Bilder" einen anderen Pfad zuweist)
    Also gibt der Inhalt des SpecialFolders "MyPictures" tatsächlich den Pfad zurück, der in den Eigenschaften von "Bilder" (das ist ja nur ein System-Link) im Pfad drin steht.

    Die beiden Ergebnis-Strings
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),"Pictures")
    und System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    können also - wenn der User in seinen "Bilder"-Eigenschaften den Pfad z.B. auf den Pfad "D:\Eigene Bilder" auf seiner Datenplatte umgelenkt hat, zwei grundverschiedene Ergebnisse liefern.

    Wo bricht denn Deine Schleife ab, wenn Du einen Haltepunkt auf Deine Zeile 40 setzt und solange wiederholt "F11" drückst, bis die Schleife in den Error läuft?
    Welche Inhalte hatten vor dem Coitus die Variablen?
    Bilder
    • 2024-05-21 23-31-45.jpg

      84,94 kB, 379×499, 20 mal angesehen

    Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von „Dideldum“ ()

    @Haudruferzappeltnoch

    Der Ablauf, läuft in die Exception wenn der Code z.B. hier auftrifft:
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

    Der Grund ist wohl, das man auf die Unter-Verzeichnisse "Eigene Bilder, Eigene Musik, Eigene Videos" so keinen Zugriff hat, weil diese Verzeichnisse da irgendwie "verknüpft" sind?
    Ich weiß das nicht, wie man das nennt. Siehe Bildanhang

    Wenn ich eine bestimmte Datei in einem der Ordner im Userverzeichnis ablege, wo ich Zugriff habe, kann ich die auch lesen!

    VB.NET-Quellcode

    1. ...
    2. Catch ex As UnauthorizedAccessException
    3. ' Zugriff verweigert, Verzeichnis überspringen
    4. Debug.WriteLine($"Zugriff verweigert:{NewCrlLf}{ex.Message}")
    5. ...

    Da bekomme ich dann folgendes:
    Zugriff auf Verzeichnis C:\Users\Fox\Documents\Eigene Bilder verweigert:


    Ich muss dann wohl systematisch diese Zugriffsverweigeungen abfangen und "Ignorieren"?

    Und nochmal zur Erklärung:

    Ich habe im Benutzerverzeichnis die Verzeichnisse:
    "Eigene Bilder" "Eigene Musik" "Eigene Videos" und "Eigene Dokumente" und "Eigene Dateien"

    In dem Verzeichnis "Eigene Dokumente" habe ich wieder "Eigene Bilder" usw...

    Warum doppelt? Warum kann ich da nicht drauf zugreifen?
    Auch auf das Verzeichnis "Eigene Dateien" und einige andere, kann ich nicht zugreifen! Gerade so ein Verzeichnis wie "AppData" wo ja eigentlich wichtige Dateien liegen.

    Das ist für mich verwirrend!



    Fazit für mich:
    Es ist wohl so ohne weiteres nicht möglich " MEIN BENUTZERKONTO " mal eben zu sichern ODER eben nur das was Windows zulässt, auch wenn dann Teile von den Daten fehlen ?(
    Bilder
    • shoot1.jpg

      119,86 kB, 672×250, 15 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    C:\Users\Fox\Documents\Eigene Bilder

    Amelie schrieb:

    Der Ablauf, läuft in die Exception wenn der Code z.B. hier auftrifft:
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    Die Pfade stimmen doch nicht überein. Wenn der Fehler bei Environment.SpecialFolder.MyDocuments kommt, dann sollte doch "C:\Users\Fox\Documents" rauskommen, oder nicht?
    Hallo at all ;)

    Habe mal komplett neu angefangen und mein Test-Code hier als zip angegangen. (ohne obj etc..)
    Zum testen alles in der FormClass.
    Dateien
    • TestCopy.zip

      (21,54 kB, 18 mal heruntergeladen, zuletzt: )
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Hi @Amelie

    die im Win-Explorer angezeigten Ordner "Eigene Bilder", "Eigene Videos", "Eigene Dokumente" usw. in Deinem Benutzerverzeichnis sind Verknüpfungen wie die auf dem Desktop.

    Diese System-Verknüpfungen im UserOrdner können ebenso beliebige Namen haben und beinhalten wie die Verknüpfungen auf den Desktop einen verlinkten Pfad, welchen Du mit den SpecialFolders abrufen kannst.
    Diese System-Verknüpfungen ersetzen in der Win-Explorer-Anzeige den eigentlichen Ordnernamen, welcher in diesen System-Verknüpfungen im Pfad eingetragen ist.

    Doppelklickst Du also in Win-Explorer die System-Verknüpfung "Meine Bilder" in Deinem Benutzer-Verzeichnis, öffnet der Win-Explorer den Pfad, welcher in dieser Verknüpfung als Pfad eingetragen ist, zeigt aber in seiner Adressleiste den Namen und nicht den Pfad der Verknüpfung an.
    So zeigt der Win-Explorer per Default z.B. beim Doppelklick auf "Eigene Bilder" in seiner Adressleiste "> Fox > Bilder" und nicht den tatsächlichen Pfad "C:\Users\Fox\Pictures".

    Diesen tatsächlichen Pfad kannst Du aber auslesen, wenn Du:
    1. Mit der linken Maustaste in die Adresszeile des Windows-Explorer klickst
    2. Die System-Verknüpfung mit der rechten Maus anklickst und den Popup-Menupunkt "Eigenschaften" anklickst. Im Tab "Pfad" findest Du den tatsächlichen Pfadnamen.

    An die tatsächlichen Pfadnamen dieser System-Ordner kommst Du also nur unter Nutzung der SpecialFolders, welche eben den Pfad auslesen, welcher in der Verknüpfung steckt.

    Der Sinn dahinter:
    Verknüpfungen kann man kann beliebig umbenennen, ohne die Funktion der Verknüpfung (den darin versteckten Pfad aufzurufen) zu beeinträchtigen.
    Auch haben diese Verknüpfungen in jedem Land andere Namen - hier "Eigene Bilder", im englischsprachigen Raum "My Pictures" usw.

    Daher haben die Variablen in den SpecialFolders auch andere "universale" Aufrufnamen, welche den angesprochenen Ordner-String zurück geben.
    Im Fall "Eigene Bilder" ist dies eben "myPictures"

    Beim Aufruf von
    System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures
    geht das System also her und greift auf den Pfad zu, der in der System-Verknüpfung drin steckt, welche hier den Namen "Eigene Bilder" trägt.
    Dies egal, welchen Namen die Verknüpfung trägt, denn SpecialFolders greift sich den Pfad aus der System-Verknüpfung, die für die "Eigene Bilder" steht.
    Hier ist also nicht Nonmen est Omen, sondern System-Verknüpfungen es omen. :D

    Die Liste von Aufrufnamen und Pfade dieser SpecialFolders habe ich ja oben schon gepostet.
    Hi @Amelie
    Im Ordner "C:\Users\%Benutzername%" sind natürlich viele Dateien und Ordner, auf welche der User (auch, wenn dieser als Administrator angemeldet ist) keinen Zugriff hat.
    Aber alle der folgenden Ordner sind für den User (soweit ich weiss - habe es noch nicht einzeln getestet) zugänglich - und diese kannst Du auch sichern:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim myAdminTools As String = System.Environment.GetFolderPath(Environment.SpecialFolder.AdminTools)
    2. Dim myAppData As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    3. Dim myCDBurning As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CDBurning)
    4. Dim myComputer As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) ' leerer String
    5. Dim myCookiesDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies)
    6. Dim myDesktop As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    7. Dim MyDesktopDir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) ' Doppelt = Desktop
    8. Dim myDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    9. Dim myDownloads As String = IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
    10. Dim myFavorites As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites)
    11. Dim myHistory As String = System.Environment.GetFolderPath(Environment.SpecialFolder.History)
    12. Dim myInternetCache As String = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)
    13. Dim myLocalAppData As String = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
    14. Dim myMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
    15. Dim myNetworkShortcuts As String = System.Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts)
    16. Dim myPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    17. Dim myPrinterShortcuts As String = System.Environment.GetFolderPath(Environment.SpecialFolder.PrinterShortcuts)
    18. Dim myPrograms As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Programs)
    19. Dim myRecent As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Recent)
    20. Dim mySendTo As String = System.Environment.GetFolderPath(Environment.SpecialFolder.SendTo)
    21. Dim myStartmenu As String = System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)
    22. Dim myStartup As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Startup)
    23. Dim myTemplates As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Templates)
    24. Dim myUserProfile As String = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
    25. Dim myVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)


    Wenn Du versuchst, den gesamten User-Ordner zu sichern, laufen einige Fehler aufgrund nicht zugreifbarer Ordner/Dateien auf.
    Diese sind aber für ein Backup auch rel. uninteressant.