Bestimmten Ordner auf allen Laufwerken suchen

  • VB.NET

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

    Bestimmten Ordner auf allen Laufwerken suchen

    Guten Abend zusammen,

    ich hoffe mir kann jemand helfen.

    Wie in der Überschrift schon beschrieben soll mein Programm einen Ordner auf allen Laufwerken suchen.
    Das Programm soll selbständig rausfinden wo Ubisoft Connect den Installationspfad für die Games hat, wenn er standardmäßig ausgewählt wurden.
    dann sieht ein Teilpfad so aus: "Ubisoft Game Launcher\games"

    Bis jetzt bin ich so weit gekommen:

    VB.NET-Quellcode

    1. Private Sub Ubi()
    2. Try
    3. For Each mydrive As IO.DriveInfo In IO.DriveInfo.GetDrives
    4. Dim listitem As String = mydrive.Name
    5. Dim di() = New IO.DirectoryInfo(listitem).GetDirectories("Ubisoft Game Launcher\games", IO.SearchOption.AllDirectories)
    6. MsgBox(di)
    7. Next
    8. Catch ex As Exception
    9. End Try



    Das Problem ist nur er gibt mir einfach nichts aus, weder Fehlermeldung noch irgendwas in einer MsgBox .

    Wäre für jeden Vorschlag glücklich :)

    Gruß AIRGMAER
    @AIRGAMER Falls das Programm ordentlich installiert wurde ist es wahrscheinlich, dass es dafür einen Registry-Eintarg gibt.
    Überzeuge Dich davon, ob es einen gibt, den kannst Du dann mit nem Einzeiler abrufen.
    Wenn nicht, probier mal ohne \games:

    VB.NET-Quellcode

    1. Dim di() = New IO.DirectoryInfo(listitem).GetDirectories("Ubisoft Game Launcher", IO.SearchOption.AllDirectories)
    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!

    AIRGAMER schrieb:

    Das Problem ist nur er gibt mir einfach nichts aus, weder Fehlermeldung noch irgendwas in einer MsgBox .
    Das liegt am TryCatch - mach den weg, dann bekommst du ordentliche Fehlermeldung.

    Aber probier erstma Rods Ansatz.
    Wenn das funzt ists deutlich einfacher und schneller als eine stabile Directory-Suche selbst zu implementieren.

    Auf jeden Fall merken: TryCatch ist ein heißes Eisen

    AIRGAMER schrieb:

    Leider gibt es bei Ubisoft keinen Registry-Eintrag (für Steam war es kein Problem)


    Stimmt doch garnet. Daraus kannste den standart Pfad hohlen (install location) hinten noch "games/" anhängen, das ist der Standartpfad für die Spiele, da kannste als erstes schauen ohne suchen wenn der Key in der Registry existiert. Und noch besser, sogar die installierten Ubi-Connect-Spiele finde ich in der Registry.
    Bilder
    • Unbenannt.jpg

      81,01 kB, 896×315, 137 mal angesehen
    • Unbenannt.jpg

      58,03 kB, 685×533, 129 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    In
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

    Dort Ist ein Key Namens Uplay, wie auch diverse Uplay Spiele, bei Uplay Install [irgendeine nummer] habdelt es sich um Spiele.

    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
    ->Uplay 'ubisoft connect
    ->Uplay Install 4553 'instaliertes spiel

    ErfinderDesRades schrieb:

    und der ist auf allen Windowsen gleich, bzw. es gibt Regeln, nach denen man ihn zuverlässig bilden kann?


    Einheitlicher als "uninstall Daten" aus der Registry geht es AFAIK nicht. Wobei der Pfad je nach OS anders sein könnte hab kein altes window parat zum schauen. Man könnte aber leicht für win 8/8.1/11 inner VM schauen.

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

    Ich hab so was schon ähnliches mal gebastelt. Hier der Code für den Uplay teil. (Damit wird Uplay direkt gestartet.. Du brauchst für dein Teil eigentlich nur dem Registry Teil)

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports Microsoft.Win32
    3. Public Class Game_Manager
    4. Dim rekUplayPath As RegistryKey = Registry.ClassesRoot.OpenSubKey("uplay\Shell\Open\Command")
    5. Private Sub Uplaybtn_Click(sender As Object, e As EventArgs) Handles Uplaybtn.Click
    6. Label2.Visible = True
    7. Label2.Text = ("Uplay wird gestartet")
    8. If rekUplayPath Is Nothing Then
    9. Return
    10. Label2.Text = ("Uplay wurde nicht gefunden.")
    11. End If
    12. Dim keyvalue As String = rekUplayPath.GetValue("").ToString()
    13. Dim splits() As String = keyvalue.Split(""""c)
    14. For i = 0 To splits.Length - 1
    15. 'MessageBox.Show(splits(i))
    16. Next
    17. Process.Start(splits(1))
    18. If Process.Start(splits(1)) Is Nothing Then
    19. Return
    20. End If
    21. Me.Refresh()
    22. End Sub
    23. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Andy2002“ ()