Announcement

Collapse
No announcement yet.

Rekursive Dateisuche

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rekursive Dateisuche

    Guten Abend allerseits.
    Ich habe mir heute im Laufe des Tages unter anderem eine Prozedur geschrieben, die es ermöglicht die Anzahl aller Dateien eines gewünschten Ordners inklusive aller Dateien der jeweiligen Unterordner zu ermitteln.

    Nun habe ich das Problem, dass teilweise auch Ordner durchsucht werden sollen, die sich außerhalb meiner Zugriffsrechte befinden (bin Admin an diesem Rechner, jedoch glaube ich zu wissen, dass die ClickOnce Anwendungen immer mit niedrigeren Rechten gestartet werden).

    Nun wäre es natürlich toll, wenn man die Rechte der Andendung weiter erhöhen könnte, um auch an die anderen Ordner (Bsp: C:\Programme) ranzukommen, oder aber die Suche fortsetzen könnte.

    Der Veranschaulichkeit halber poste ich an dieser Stelle einfach mal die Prozedur mit Highlighting, wie gfoidl es wünscht.

    [highlight=vbnet]
    Private Sub AllFolders(ByVal Pfad As String)
    Dim Folders() As String = System.IO.Directory.GetDirectories(Pfad)
    Dim Files() As String = System.IO.Directory.GetFiles(Pfad)
    Dim Folder As String
    Dim File As String

    For Each File In Files

    Anzahl += 1

    Next

    If Folders.Length <> 0 Then

    For Each Folder In Folders

    Try

    AllFolders(Folder)

    Catch ex As UnauthorizedAccessException

    MsgBox("Sie besitzen nicht genügend Rechte um auf " & Folder & " zuzugreifen.")

    End Try


    Next

    End If

    End Sub
    [/highlight]

    Wäre schön, wenn jemand einen Rat hätte.

    Mfg Myst


    PS: Die Prozedur wird von einem anderen Thread ausgeführt. Irgendwie erweist sich die Fehlersuche dabei äußerst schwierig, da immer nur auf den Thread verwiesen wird, anstelle des konkreten Fehlerproblems. Kann man da vlt. auch etwas dran drehen?
    Zuletzt editiert von Myst; 29.10.2008, 02:01. Reason: Falscher rekursiver Aufruf

  • #2
    Hallo,

    erstmals danke dass du den Code so formatiert hast wie ich das wünsche .

    Zur Suche nach Dateien bietet das Framework eine Methode Directory.GetFiles(...) in deren Überladung eingestellt werden kann dass auch Unterordner durchsucht werden sollen (SearchOption).

    Ich glaube nicht dass es möglich die Rechte der Anwendung zu erhöhen - wozu wäre dann ein Rechtevergabe seitens Betriebssystem überhaupt nötig wenn die Anwendungen ihre Rechte selbst bestimmen -> Win ist zwar nicht das sicherste Betriebssystem, aber dies dürfte bei Win nicht möglich sein!

    Bezüglich debuggen und Threads: In VS im Menü Debuggen | Ausnahmen kann eingestellt werden dass der Debugger hält wenn die Ausnahme ausgelöst wird.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hmm man merke: Immer alle Überladungen anschauen.

      Trotzdem: Wähle ich zb: C:\ als Pfad, wird trotzdem noch die UnauthorizedAccessException ausgelößt sobald er auf die Ordner zugreift, auf die er nicht zugreifen darf.

      Wenn ich diese Exception behandeln möchte, dann ist der Suchvorgang abgebrochen, nehme ich an (funktioniert gerade nicht - kann es daher zunächst nicht prüfen).

      Weißt du zufällig noch einen Rat, wie man auch das Problem umgehen könnte?
      Egal ob er nun dann die Ordner durchsuchen kann, oder nicht - hauptsache er sucht weiter

      Mfg Myst

      Comment


      • #4
        Das mit der Exception kann ich auch nicht testen weil ich alle Rechte habe und auch sonst keinen Fehler erzeugen kann.

        Aber soweit ich mich erinnern kann bricht die Suche bei GetFiles ab. Es gibt keine Option dies zu ändern.

        Es bleibt somit nichts über als selbst die Dateien/Ordner rekursiv zu durchlaufen. Eventuell noch eine Kombination mit GetFiles.

        Tut mir leid -> geht nicht so wie gewünscht

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X