[Feature request] [Windows] Display open vaults like other cloud folders

Wäre es möglich eine Tresoroption hinzuzufügen, welche es neben der Wahl des Mount-Punktes auch erlaubt diesen Mount-Punkt beim Öffnen des Tresors als Windows System Ordner aufzunehmen und beim schließen wieder zu entfernen? Damit würde ein offener Cryptomator Tresor deutlich präsenter im Explorer repräsentiert werden als ein angepinnter Ordner oder ein Laufwerk unter “Mein PC”.
Idee

Für meine Tresore habe ich das Ganze statisch in die Registry eingepflegt, da ich keine Programmiererfahrung habe. Allerdings werden so alle Tresore immer angezeigt, auch wenn sie verschlossen sind.

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}]
@="Cryptomator"
"System.IsPinnedToNameSpaceTree"=dword:00000001
"SortOrderIndex"=dword:00000041

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}\DefaultIcon]
@="C:\\Program Files\\Cryptomator\\Cryptomator.exe"

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}\InProcServer32]
@=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
  65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}\Instance]
"CLSID"="{0E5AAE11-A475-4c5b-AB00-C66DE400274E}"

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}\Instance\InitPropertyBag]
"Attributes"=dword:00000011
"TargetFolderPath"="C:\\Users\\Lucas\\Cryptomator"

[HKEY_CLASSES_ROOT\CLSID\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}\ShellFolder]
"FolderValueFlags"=dword:00000028
"Attributes"=dword:f080004d

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{0c664d4c-5de2-4bf6-8512-ddb40eb3b6c1}]
@="Cryptomator"
"ApplicationName"="Cryptomator"

Ob das so gut gelöst ist - keine Ahnung, aber es funktioniert.

Hey und wilkommen in der Cryptomator Community :slightly_smiling_face:

eigentlich wollte ich schon früher antworten, aber hatte durch Releasevorbereitung (Version 1.5.15 ist bald da) das etwas aus den Augen verloren. Sorry!

Das geht aufjedenfall! Ich meine, du hast es ja schon statisch hinbekommen, dann sollte es auch möglich sein, es programmatisch umzusetzten.

Das allerdings 1:1 zu kopieren ist, denke ich, nicht unbedingt sicher/nachhaltig, da ich mich zu wenig mit den verwendeten Registry-Keys auskenne. Woher hast du die Info/was sind deine Quellen? Darauf aufbauend kann man dann sicher das Feature umsetzen (vielleicht sogar zeitnah :wink: )

Ich sehe auch gerade, wir haben sogar ein Ticket dazu offen:

Hi,

Vielen Dank für dieses grandiose Stück Software!

Um ehrlich zu sein, habe ich mich anhand [1] und der vorhandenen Registry Einträge des Nextcloud Ordners an einem Test-Laptop durchgeschlagen.

Hätte ich Github mal sauberer durchsucht, wäre mir sicher auch das Ticket aufgefallen. Der zweite Teil der von dir dort verlinkte Anleitung [2] stellt so ziemlich das dar, was ich gemacht habe.

Falls das Feature es in den nächsten oder irgendeinen kommenden Release schafft, würde mich das riesig freuen, ansonsten habe ich ja meine kleine Lösung die Tresore in einem Ordner “Tresor” im Ordner “Cryptomator” im Benutzerverzeichnis bereitzustellen und den Ordner “Cryptomator” dann über [2] im Explorer einzubinden.

Damit meine Lösung auch für Personen mit vielen Tresoren funktioniert, müsste der Ordern “Tresor”, in welchem ein Tresor bereitgestellt wird, beim Öffnen des Tresors im Ordner “Cryptomator” erstellt und beim Schließen wieder gelöscht werden, da sonst die Liste im Explorer ‘platzen’ würde. Das hätte aber auch den Vorteil, dass unerfahrene Nutzer nicht aus versehen eine Datei in diesem Ordner speichern und denken sie wäre im Tresor.
Erneut hätte ich Github tiefer durchsuchen sollen. Das passt zu diesem Ticket [3].

Sucht Ihr eigentlich noch Testflight Nutzer?

Einen schönen sonnigen Tag!

[1] - https://de.bilee.com/wie-kann-ich-einen-neuen-systemordner-erstellen-der-in-this-pc-in-windows-8-1-ohne-zustzliche-werkzeuge-angezeigt-wird.html

[2] - https://docs.microsoft.com/en-us/windows/win32/shell/integrate-cloud-storage

[3] - Ich kann keinen Link mehr anfügen, aber es wäre Issue 1584 von CarlColijn

Hallo nochmal,

Ich habe mir zwei Umsetzungsmöglichkeiten bezüglich der Idee von [3] / meiner Idee überlegt:

1. Tresoroptionen / Laufwerke / Einhängepunkt erhält eine neue Wahlmöglichkeit in der Art “Als Systemordner bereitstellen”.

Bei dieser Option würde, wie in meinem letzten Beitrag skizziert, für jeden Tresor beim Öffnen des Tresors ein Ordner “Tresor” im Ordner “Cryptomator” erstellt und der Tresor darin bereitgestellt werden. Nach dem Schließen des Tresors wird der Ordner “Tresor” wieder gelöscht. [2]
Der Ordner Cryptomator selbst wird bei der Installation angelegt und als Systemordner eingebunden. Wo der Ordner “Cryptomator” an sich ist spielt dabei keine Rolle, um konsistent mit anderen Cloud-Diensten zu sein, würde sich das Benutzerverzeichnis %USERPROFILE% anbieten.

Mögliche Schwierigkeiten habe ich auf den ersten Blick mit meinem kleinen Programmier- und Windowsverständnis keine gefunden (was nichts heißen will).

  • Die notwendigen Registry Einträge für den Systemordern nach [1] werden bei der Installation (oder später?) in HKEY_CURRENT_USER geschrieben und brauchen keine Admin-Rechte. Hierbei wird eine CLSID benötigt.

  • Das erstellen eines Ordners sowie das Bereitstellen eines Tresors in einem leeren NTFS Ordner kann Cryptomator ja bereits.

  • Ein Nachteil: Cryptomator würde immer als Systemordner angezeigt werden, auch wenn kein Tresor geöffnet ist. Mich würde das nicht stören (Cryptomator startet sich bei mir eh mit dem System und entsperrt einen meiner Tresore). Vielleicht (Ich habe keine Ahnung ob möglich) wäre es sogar umsetzbar, dass ein Klick auf den Systemordner “Cryptomator” Cryptomator startet bzw. das UI in den Vordergrund bringt, wenn kein Tresor geöffnet ist.

2. Die bisherigen Optionen bei Tresoroptionen / Laufwerke / Einhängepunkt werden um ein Kästchen “Als Systemordner bereitstellen” ergänzt.

Im Gegensatz zu Option 1 kann dieses Kästchen zusätzlich zu dem gewählten Einhängepunkt (Automatisch / Laufwerksbuchstabe / Ordner) gewählt werden. Beim Öffnen des Tresors würde Alles erstmal wie gehabt weiterlaufen und sich danach in zwei Möglichkeiten aufspalten.

a. Ein Offener Tresor entspricht einem Systemordner.

Nach dem Öffnen und Einhängen des Tresors werden die notwendigen Registry Einträge nach [1] ohne Admin-Rechte in HKEY_CURRENT_USER geschrieben, sodass der gewählte Einhängepunkt als Systemordner bereitgestellt wird. Beim Schließen werden die Einträge wieder entfernt.
Mögliche Schwierigkeiten:

  • Soweit ich weiß, müsste der Nutzer alle Explorer-Fenster schließen und neu öffnen, dass der Systemordner angezeigt wird. Beim Schließen des Tresors genauso.

  • Für jeden Tresor müsste es eine eindeutige CLSID, welche man allerdings sicher irgendwie aus der Tresor ID (Wenn ich es richtig gelesen habe, ist so etwas für die Tresorversion 8 geplant) herleiten könnte, aber was tun, wenn diese CLSID doch plötzlich einer bereits vorhandenen CLSID auf dem PC entspricht?

b. Alle offenen Tresore werden als Unterordner eines Systemordners angezeigt.

Im Grunde entspricht das Option 1. Nach dem Öffnen des Tresors wird er wie bisher eingehängt. Zusätzlich wird im Systemordner “Cryptomator” (bei der Installation erstellt) ein leerer Ordner “Tresor” erstellt und über symlink oder junction mit dem Tresor Einhängepunkt verknüpft. Beim Schließen des Tresors wird die Verknüpfung entfernt und der Ordner “Tresor” wieder gelöscht. Hier könnte die Option auch für alle Tresore in den Einstellungen der UI und nicht auf Tresor Basis in den Tresoreinstellungen erfolgen.
Mögliche Schwierigkeiten:

  • Nachdem was ich gelesen habe, können symlinks nur mit Admin Rechten erstellt werden und junctions machen irgendwelche komischen Dinge. Das Problem wäre sehr schnell gelöst, wenn man Dokany dazu bekommt mehrere (zumindest zwei) Einhängepunkte zu unterstützen. Windows kann das für lokale Festplatten. Wie steht es da bei Dokany?

Mein Fazit
Option 2b wäre für den Nutzer das Flexibelste (Den Einhängepunkt wählen wie man es braucht und dennoch die Vorteile des Systemordners haben) und für die Programmierung glaube ich das Komplizierteste.
Option 2a disqualifiziert sich in meinen Augen dadurch, dass ein Schließen und Öffnen der Explorer Fenster notwendig wäre. Wie geschrieben, kann ich dabei aber auch falsch liegen.
Ich würde mich sehr über eine Umsetzung ähnlich dem hier freuen!

So jetzt habe ich das Forum mit diesem Thema erstmal genug “belastet”. Vielleicht sollte ich damit zu den jeweilige Github Issues umziehen.
Liebe Grüße!

[1] - Integrate a Cloud Storage Provider - Win32 apps | Microsoft Docs

[2] - Just create custom mount point folder if it doesn’t exist · Issue #1584 · cryptomator/cryptomator · GitHub

[3] - Windows Explorer Integration · Issue #29 · cryptomator/cryptomator-win · GitHub