Ich unterstütze eine alte Version einer C # -Anwendung, die auf .NET 3.5 läuft. Wir haben ein Problem mit dem FolderBrowserDialog
unter Windows Vista (entweder 32 oder 64-Bit) gefunden.
Im Grunde ist es so, dass der Dialog erscheint, aber nur der root Desktop-Knoten wird angezeigt, nicht einmal in der Lage, ihn zu erweitern, um etwas anderes anzuzeigen. Offensichtlich ist das unmöglich zu verwenden.
Nach einer großen Menge an Versuch und Irrtum gelang es mir schließlich, etwas Nutzbares zu bekommen, indem ich die RootFolder
-Eigenschaft vor den Rest des Setups setzte:
Das fast funktioniert; Allerdings habe ich das bizarre Problem, dass dann das SelectedPath
(per Definition der Inhalt von textBoxTo
) ein Pfad zum Home-Verzeichnis des aktuellen Benutzers ist, es wird nicht automatisch zu diesem Pfad navigieren, sondern nur das Mein Computerknoten wurde auf eine Ebene erweitert. Es ist vollkommen in Ordnung für jeden anderen Weg.
Ich bin mir sicher, dass Ihre erste Vermutung ein Erlaubnisproblem sein würde, genauso wie meine Intuition. Es scheint nicht zu sein, dieses Problem tritt normal und als Administrator für Standard-und Administratorkonten ausgeführt. Es ist eine saubere Installation, natürlich, keine seltsamen Berechtigungen oder irgendetwas.
Das ist ziemlich ärgerlich, wenn sich all unsere Standardwerte im aktuellen Benutzerverzeichnis befinden!
Hinweis: Dieses nur geschieht innerhalb der Anwendung. es ist, soweit ich gesehen habe, nicht mit einer kleinen Testanwendung reproduzierbar.
Irgendwelche Ideen zu was könnte das verursachen?
Update: Screenies:
Das ist das Verhalten, das ich will ( erhalten von einer kleinen Test-App)
Das ist, was ich mit der Standard-Eigenschaft
Das erhalte ich, indem ich das Stammverzeichnis auf Arbeitsplatz setze
Hinweis: Das letzte Bild hatte dieselbe SelectedPath
wie das erwartete Bild ...
Ich hatte ein ähnliches Problem. In Windows Vista und Windows 7 der folgende Code:
%Vor%gibt den Desktop zurück. Wenn Sie in Windows Explorer suchen, ist der Stamm der Struktur Desktop, nicht Arbeitsplatz wie in Windows XP. Um dieses Problem zu lösen, verwenden Sie stattdessen:
%Vor%Jeder Windows-Computer hat ein C: \ -Laufwerk, damit wird Ihr Problem gelöst.
Ich hoffe, das hilft dir.
Wenn Sie nur auf die privaten Ordner des Benutzers zugreifen, verwenden Sie
%Vor%Nur der angegebene Ordner und alle Unterordner, die darunter liegen erscheint im Dialogfeld und kann ausgewählt werden. Die SelectedPath-Eigenschaft bestimmt zusammen mit RootFolder, was der ausgewählte Ordner sein wird wenn das Dialogfeld angezeigt wird, solange SelectedPath ein ist absoluter Pfad, der ein Unterordner von RootFolder ist (oder genauer gesagt, zeigt auf einen Unterordner des Shell-Namespace, der von dargestellt wird RootFolder).
Kurz gesagt, Sie können keinen privaten Ordner als startup selectedPath eingeben, es sei denn, RootFolder befindet sich bereits im privaten Ordner des aktuellen Benutzers.
Weitere Informationen finden Sie in Ссылка
Tags und Links .net c# winforms windows-vista folderbrowserdialog