Laden...

"FolderBrowserDialog" funktioniert nicht bei Ondrive-Backup??

Erstellt von cybermatze vor einem Jahr Letzter Beitrag vor einem Jahr 564 Views
C
cybermatze Themenstarter:in
3 Beiträge seit 2023
vor einem Jahr
"FolderBrowserDialog" funktioniert nicht bei Ondrive-Backup??

Hallo liebes Forum,

ich wollte meine Programmierkenntnisse nach vielen Jahren wieder auffrischen und komme nicht über die 2. Zeile meines codes hinaus 😦(
Zur Auswahl eines Ordners benutze ich die Funktion "FolderBrowserDialog". Das hat bisher auch immer geklappt und es wurden in der Auswahlbox unter dem Desktop alle andere Knoten (Netzwerk, Dieser PC, Laufwerke, usw.) angezeigt.
Jetzt zeigt mir die Auswahlbox nur noch den Knotenpunkt "Desktop" an. Alle anderen Knotenpunkte sind verschwunden. Durch Zufall habe ich herausgefunden, dass hierfür das Onedrive for Business Backup verantwortlich ist. Dort kann eingestellt werden, ob der "Desktop" bei der Synchronisation mit eingebunden werden soll.
Schließe ich den Desktop von der Sicherung aus, funktioniert der "FolderBrowserDialog" wie er soll und alle Knoten werden angezeigt. Binde ich den DEsktop bei der Sicherung wieder mit ein, ist die Dialogbox bis auf den Desktopeintrag leer und es können keine Verzeichnisse ausgewählt werden.

Die Zuweisung eines Rootfolders geht in den folgenden BEispielen ebenfalls nicht:


dialog.RootFolder = Environment.SpecialFolder.DesktopDirectory;
dialog.RootFolder = Environment.SpecialFolder.Desktop;

Alle anderen Versionen wie z.B. Environment.SpecialFolder.MyComputer oder Environment.SpecialFolder.MyPictures gehen aber wieder ohne Probleme.

Da ich bei Google nichts hierzu gefunden habe, weiß ich auch nicht, ob das Thema hier richtig verortet ist. Könnte auch Windows oder OneDrive-Problem sein 🙂).

Kann mir bitte jemand einen Hinweis geben, wo und nach was ich bei diesem Problem suchen soll??

Lieben Dank im voraus!
Cybermatze

16.830 Beiträge seit 2008
vor einem Jahr

Wenn ich das richtig aufgeschnappt habe, dann gab es dazu mehrere Fehler in Windows 11 und wurde mit KB5022303 teilweise behoben.
January 10, 2023—KB5022303 (OS Build 22621.1105) - Microsoft Support
Leider hast aber weder gesagt welche UI Technologie (vermutlich Forms?), noch Version, noch Betriebssystem (vermutlich Windows 11?) Du hast.

PS: .NET hat keinen eigenen Folder Browser Dialog. Was Du siehst kommt von Windows, nicht von .NET. .NET ruft einfach nur die API von Windows auf. Und ja: der alte SHBrowseForFolder, der unter dem FolderBrowserDialog sitzt, unterstützt das nicht.
Es kann also sein, dass Dein Vorhaben so generell mit dem FolderBrowserDialog nicht funktioniert, unabhängig vom KB.

Windows hat aber einen zweiten Dialog, der sich OpenFileDialog nennt und IFileDialog als API verwendet. Der unterstützt das auch.
Leider weiß ich aber auch nicht auswendig, wie man aus Windows Forms den neueren OpenFileDialog aufrufen kann.
Aber zumindest kennst den Grund.

4.938 Beiträge seit 2008
vor einem Jahr

Hallo,

dazu kannst du das "Windows API Code Pack" benutzen (gibt es in zwei Versionen, einmal für .NET Framework und einmal für .NET [Core]).
Eine abgespeckte Version, nur die Dialoge betreffend, gibt es unter ShellFileDialogs.

C
cybermatze Themenstarter:in
3 Beiträge seit 2023
vor einem Jahr

Danke für die Beiträge.

Sorry für die fehlenden Angaben: ich habe den Rechner neu installiert. Win 11 aktuell gepatcht, VS Community Edition 17.4.4 und ich nutze Forms für das Programm. Der beschriebenen KB5022303 ist ebenfalls schon gepatcht.

Das Programm soll einfach nur Dateien von einem Ordner in den anderen verschieben. Hierfür war eine Auswahl des Quell- und Zielordners angedacht mit dem FolderBrowserDialog.

Also ganz verstehe ich das noch nicht. Grundsätzlich funktioniert der FBD wunderbar. Ich sehe aber den Zusammenhang nicht, warum es nicht mehr funktioniert, wenn das Backup von OneDrive für den Desktop eingeschaltet wird. Das hat doch erst einmal mit Forms und .Net nichts zu tun, oder? Da müsste OneDrive im Hintergrund so einiges mehr verbiegen, außer nur Dateien zu synchronisieren?

Mit OpenFileDialog habe ich auch schon probiert. Hierbei muss ich aber eine Datei auswählen. Ich kann im Anschluss das Verzeichnis mit Path.GetDirectoryName(ofd.FileName) auslesen, macht aber keinen Sinn, wenn ich keine Verzeichnisse ohne Dateien auswählen kann.

Vielleicht sollte ich für mein Wissensstand doch lieber "RoboCopy" nutzen und das Programmieren bleiben lassen 🙂)

Hat für mich noch jemand einen tipp, wie ich den OpenFileDialog so verbiegen kann, dass er nur eine Ordnerauswahl zulässt?

Danke Euch...

16.830 Beiträge seit 2008
vor einem Jahr

Ich sehe aber den Zusammenhang nicht, warum es nicht mehr funktioniert, wenn das Backup von OneDrive für den Desktop eingeschaltet wird. Das hat doch erst einmal mit Forms und .Net nichts zu tun, oder? Da müsste OneDrive im Hintergrund so einiges mehr verbiegen, außer nur Dateien zu synchronisieren?

Korrekt. Es ist eine Windows Funktionalität. Windows hat eben zwei verschiedene Dialoge; vereinfacht gesagt "alt" und "neu.
Technisch gesehen ist der "Desktop" kein einfacher "Desktop" mehr, wenn er auf OneDrive liegt. Es ist eine Art von Symbolische Verknüpfung
Und der "alte" Dialog, der unter FBD verwendet wird, unterstützt das einfach nicht.

Kannst nichts dran ändern.

Hat für mich noch jemand einen tipp, wie ich den OpenFileDialog so verbiegen kann, dass er nur eine Ordnerauswahl zulässt?

Gar nicht. Es ist einfach das falsche Werkzeug.
Das ist wie als wenn Du versuchst mit ner Banane nen Nagel in die Wand zu hauen.

Warum beachtest Du nicht den Hinweis von Th69 und machst das?
Ist doch die Lösung.

C
cybermatze Themenstarter:in
3 Beiträge seit 2023
vor einem Jahr

Hallo,

lieben Dank für die Antworten.
Ich habe nun das Problem verstanden, kann aber die Anleitung von TH69 nicht umsetzen. Das ist mir aktuell noch zu schwierig, bin noch am Anfang.

Ich werde erst einmal kleiner Brötchen backen, freue mich aber trotzdem, konstruktive und nette Antworten von Euch erhalten zu habe.

Vielen Dank und liebe Grüße
Cybermatze

4.938 Beiträge seit 2008
vor einem Jahr

Einfach das NuGet-Package ShellFileDialogs zu deinem Projekt hinzufügen und dann dessen ShellFileDialogs.FolderBrowserDialog benutzen.

Falls du noch nie vorher mit NuGet gearbeitet hast, dann lies Schnellstart: Installieren und Verwenden eines Pakets in Visual Studio (nur Windows) (s. "Hinzufügen des NuGet-Pakets „Newtonsoft.Json“", nur daß du dort dann das andere Paket suchst und auswählst).